3

多くのサンプル コードで、.getJSON() の形式が次のようなものであることがわかりました。

$.getJSON("url?jsoncallback=?", function(data){
...}

そしてバックエンドでは、レスポンスは次のように書かれています

$response = $_GET["jsoncallback"]."(".json_encode($orders).")";
echo $reponse

「?jsoncallback=?」を削除します。URL と $_GET["jsoncallback"] およびバックエンドの角括弧から、すべてがまだ機能しているようです。では、実際にその jsoncallback の用途は何ですか?

4

3 に答える 3

2

コールバック名はJSONPに使用されます。これは、同一オリジン ポリシーを回避する方法です。

于 2013-01-14T04:35:08.733 に答える
2

持っていない場合は、 JSONP *jsoncallback=?ではなく通常の JSON リクエストを実行します。独自のサーバーまたはCORSヘッダーを送信するサーバーで、通常の JSON 要求を問題なく実行できます。


* JSONP は忘れてください。これは、外部サーバーからコードを実行するスクリプト要素をドキュメントに挿入するための派手な名前ですが、独自のスクリプトと同じ権限を持っています。は$_GET["jsoncallback"]、次のような JavaScript 関数呼び出しになります。

fn({"data": "value"});

これは、 のようなスクリプト内のコードです<script src="http://foreign.org/data?jsoncallback=fn"></script>。ご覧のとおり、これは JSON ではなく Javascript です。これにより、foreign.org (またはそれらをハッキングしている誰か) はスクリプトを変更して、あなたのページで承認を得て何でもできるようになるため、「JSONP」を使用するときは注意し、CORS JSON を優先してください。

于 2013-01-14T05:07:27.487 に答える
1

JSON コールバックを使用して、クロスドメイン データを jQuery で表示できます。JSONP は、同じオリジン ポリシーで許可されていないため、クロス ドメイン呼び出しを行うために使用されます。以下の例をご覧ください。

http://www.9lessons.info/2009/12/display-cross-domain-data-json-callback.html

于 2013-01-14T04:41:48.573 に答える