jQuery AJAX クロスドメイン通信
クロスドメイン AJAX リクエストは、同一オリジン ポリシーの制限により制限に遭遇します。あるドメイン上のクライアント スクリプトが別のドメインのリソースにアクセスしようとすると、通常はセキュリティ上の理由で失敗します。
ケース:
テストの場合を考えてみましょう。 php はローカルホスト上に存在し、testserver.php は Web サーバー上でホストされます。 test.php から testserver.php への AJAX リクエストは失敗し、リクエストのクロスドメインの性質により「エラー」アラートがトリガーされます。
解決策:
この制限を克服するには、JSONP (パディング付き JSON) を使用できます。
jQuery:
$.ajax({ url: "testserver.php", dataType: "jsonp", // Note the lowercase 'p' in JSONP success: function (json) { // Handle successful response alert("Success"); }, error: function () { alert("Error"); } });
PHP:
<?php $arr = array("element1", "element2", array("element31", "element32")); $arr['name'] = "response"; echo $_GET['callback'] . "(" . json_encode($arr) . ");"; ?>
PHP では、コールバック関数名が渡されましたjQuery によるものは、$_GET['callback'] 経由で利用できます。 「callbackName('jsonString')」形式で応答をエコーすることで、jQuery が JSON データを解釈できるようにします。
代替:
jQuery は短縮メソッドを提供します。クロスドメイン AJAX リクエストを簡素化する $.getJSON() と呼ばれます。ただし、「callback=?」を追加する必要があります。 GETパラメータとしてURLに追加します。 jQuery は、このプレースホルダーを生成されたコールバック メソッドに自動的に置き換えます。
以上がjQuery AJAX はクロスドメイン通信における同一オリジン ポリシーの制限をどのように克服できるでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。