jQuery AJAX クロスドメイン通信チャレンジ
クロスドメイン AJAX リクエストが発生した場合、あるドメインの HTML ドキュメントが別のドメインにリクエストすると、問題が発生します。 2 つの PHP ファイル、test.php と testserver.php:
test.php:
<script src="scripts/jq.js" type="text/javascript"></script> <script> $(function() { $.ajax({ url: "testserver.php", success: function() {alert("Success")}, error: function() {alert("Error")}, dataType: "json", type: "get" }); }); </script>
testserver.php:
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo json_encode($arr); ?>
解決策: JSONP を利用する
SOP を克服するには、次のことが考えられます。 JSONP (JSON with Padding) を採用します。 JSONP では、データを関数呼び出しとして送信できるため、SOP によって課せられた制限を回避できます。jQuery:
$.ajax({ url: "testserver.php", dataType: 'jsonp', // Notice! JSONP < - P (lowercase) success: function(json){ // do stuff with json (in this case an array) alert("Success"); }, error: function(){ alert("Error"); } });
PHP:
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo $_GET['callback'] . "(" . json_encode($arr) . ");"; ?>
以上がJSONP は jQuery のクロスドメイン AJAX 通信の問題をどのように解決できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。