一直试图创建一个简单的JSONP调用,但它并不总是有效,我不知道为什么.这是代码:
server-side(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;
}
?>
Run Code Online (Sandbox Code Playgroud)
客户端(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>
Run Code Online (Sandbox Code Playgroud)
此代码工作并显示"它工作!" 在我的
块.
当我不使用{'callback': 'process'}并将?callback = process直接放入$ .getJSON()URL 时,为什么它不起作用?
如果我使用<script src="http://server/server.php?callback=process"></script>而不是$ .getJSON()调用,为什么它不起作用?
两个非工作案例实际上都会返回,process("It works");但这不会被执行,为什么?
谢谢