0

重複の可能性:
同一生成元ポリシーを回避する方法

たとえば、2つのドメイン「http://domain1.com/info.php」があり、もう1つは「http://domain2.com/script.html」です。

現在、最初のドメイン「http://domain1.com/info.php」は、このようなjsonエンコードされたデータをリリースしています

{
    "str_info": [
        {
            "str_name": "Mark",
            "str_age": "22"
        },
        {
            "str_name": "Aliza",
            "str_age": "52"
        }
    ]
}

2番目のドメイン「http://domain2.com/script.html」が行うことは、最初のドメインによって提供されたデータを取得して操作することです。

「 http://domain1.com/info.php」という最初のドメインからスクリプトである2番目のドメインに接続してデータを取得する方法がわかりません。可能であれば、jsonp、jquery、ajaxの使用方法を教えてください。

4

2 に答える 2

0

次のようなコールバック関数を使用してデータを送信します

callback({
  "str_info":[{"str_name":"Mark","str_age":"22"},{"str_name":"Aliza","str_age":"52"}]
});

次に、データを受信するドメインで関数を使用します

<script>
    function callback(i){
    //maniputlate i (json data) here
    }
</script>
<script type="text/javascript" src="http://domain1.com/info.php"/>
于 2013-01-15T10:35:23.300 に答える
0

jQuery.orgから

ブラウザのセキュリティ制限により、ほとんどの「Ajax」リクエストには同一生成元ポリシーが適用されます。リクエストは、別のドメイン、サブドメイン、またはプロトコルからデータを正常に取得できません。

スクリプトとJSONPリクエストは、同一生成元ポリシーの制限の対象ではありません。

クロスドメインで作業している場合は、 JSONPと呼ばれるメソッドを使用できます 。ajaxリクエストはパラメーター?callback=callbacknameを追加し、サーバーは次のように応答します。

callbackname
(
    {
        "str_info": [
            {
                "str_name": "Mark",
                "str_age": "22"
            },
            {
                "str_name": "Aliza",
                "str_age": "52"
            }
        ]
    }
);

次に、関数がクライアントで実行されます。jQueryを使用して、これを非常に簡単に行うことができます

$.getJSON("http://domain1.com/info.php?callback=?", function(data) {
  alert("success");
});

PHPでは、結果を次のようにラップします(簡単な例)

echo $_GET['callback'], '(' , json_encode( $data ), ')';
于 2013-01-15T10:45:22.210 に答える