2

Ajaxでリクエストしたかったのですが、ドメインが違うことに気づき、代わりにJSONを使うことにしました。

コード:

メインの PHP ファイル (スクリプト コード)

$(".name").click(function(){
    //Get information
    var id = $(this).attr("id").substring(1);

    jQuery.getJSON("https:/otherdomain.com/makereq.php?id="+id+"&callback=?",
    function(data) {
         alert("id: " + data.id);
         return false;
    });
});

Makereq PHPファイル

$jsonData = array('id'=>$_GET['id']);
echo $_GET['callback'] . '(' . json_encode($jsonData) . ');';

Firefox では問題なく動作します。データを取得すると、アラートに送受信された ID が表示されます。しかし、Internet Explorer では、コンテンツがブロックされ、データが受信されないというセキュリティ エラーが表示されます。Chrome ではどちらも機能しません。

なぜそれが起こっているのですか、それとも私が間違っているのですか? 他のドメインからのブラウザ エラー/アラートなしでデータを送受信するソリューションはありますか?

4

2 に答える 2

0

これはこの方法ではできないと思います。cURLを使用して他のホストのコンテンツを読み取るドメインでブリッジPHPファイルを使用してみてください。それは確かに機能します。

于 2012-04-11T11:46:56.127 に答える
0

のjQuery ページをチェックしてくださいgetJSONJSONPのセクションは、クロス ドメイン リクエストでコールバックを使用してデータを使用しようとしているときに求めているものです。

getJSON()ここでは機能しません。やりたいことは、コールバックの名前を使用して関数を記述し、実際に PHP ファイルから返されたデータを JavaScript ファイルとしてロードすることです。

<script src="https:/otherdomain.com/makereq.php?id=1&callback=callBack"></script>

<script>
    callBack(data) {
       [do stuff...]
    }
</script>
于 2012-09-18T21:11:01.580 に答える