一直在尝试创建一个简单的 JSONP 调用,但它并不总是有效,我不知道为什么。这是代码:
服务器端(http://server/server.php
):
<?php
$res = json_encode("It works!");
if(isset($_GET['callback']) === TRUE) {
header('Content-Type: text/javascript;');
header('Access-Control-Allow-Origin: http://client');
header('Access-Control-Max-Age: 3628800');
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE');
echo $_GET['callback']."(".$res.");";
} else {
echo $res;
}
?>
客户端(http://client/client.html
):
<html>
<head><title>JSONP</title></head>
<body>
<h1>JSONP Experiment</h1>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script>
function process(data) {
$('#result').text(data);
}
$.getJSON(
'http://server/server.php?callback=?',
{'callback': 'process'}
);
</script>
<p id="result"></p>
</body>
</html>
此代码有效并显示“它有效!” 在我的
堵塞。
为什么当我不使用
{'callback': 'process'}
并将 ?callback=process 直接放入 $.getJSON() URL 时它不起作用?<script src="http://server/server.php?callback=process"></script>
如果我使用而不是 $.getJSON() 调用,为什么它不起作用?
两个不工作的案例实际上都返回process("It works");
了,但没有执行,为什么?
谢谢