単純な 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>
このコードは機能し、「It works!」と表示されます。私の中で
ブロック。
{'callback': 'process'}
$.getJSON() URL に直接 ?callback=process を使用して配置しないと機能しないのはなぜですか?<script src="http://server/server.php?callback=process"></script>
$.getJSON() 呼び出しの代わりに使用すると機能しないのはなぜですか?
両方の動作しないケースが実際に返さprocess("It works");
れますが、これは実行されません。なぜですか?
ありがとう