1

リモート サーバーからデータをフェッチする場合は、JSONP が最適なツールだと思います。しかし、私が見た例に混乱しています:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>
<script type="text/javascript">

    $(document).ready(function() {

        $.ajax({
            dataType: 'jsonp',
            data: 'p3=c',
            jsonp: 'callback',
            url: 'http://someserver.com/app?p1=a&p2=b',
            success: function (data) {
                console.log("data="+data);

                $.each(data, function (i, r) {
                    console.log("i="+i);
                    console.log("r="+r);
                });
            },
        });
    });

</script>

リクエストで、jQuery1234567890 形式の値を持つコールバック パラメータが追加されていることがわかります。そのリクエストを処理するアプリを見ると、リクエストからコールバック パラメーターを抽出し、返される json データをそれと関連するブラケットでラップするため、最終的に次のようなものが返されます。

jQuery1234567890([{"x":"100","y":"101"},{"x":"200","y":"201"}])

だから私の最初の質問は次のとおりです。

(1) アプリが機能していることは正しいですか?

(2) jQuery / JSONP は実際に私たちのために何をしてくれましたか?

私は、jQuery が「jsonp」の dataType を認識し、スクリプト タグを DOM に挿入すると、ブラウザがスクリプトをダウンロードして実行すると想定していました。そうである場合、jQuery は関数 jQuery1234567890 を作成しましたか? その実装は、パラメーターを success 関数に渡すことですか?

(3) 私の理解は正しいですか (そうではないと思います)?

ありがとうございました、

ポール

4

2 に答える 2

1

(1) アプリが機能していることは正しいですか?

はい、それは正しい JSONP 形式です

(2) jQuery / JSONP は実際に私たちのために何をしてくれましたか?

&callback=jQuery1234567890リクエストにを配置して、JSONP が必要であることをサーバー アプリケーションに通知しました。

私は、jQuery が「jsonp」の dataType を認識し、スクリプト タグを DOM に挿入すると、ブラウザがスクリプトをダウンロードして実行すると想定していました。そうである場合、jQuery は関数 jQuery1234567890 を作成しましたか? その実装は、パラメータを success 関数に渡すことですか?

(3) 私の理解は正しいですか (そうではないと思います)?

はい、あなたの理解は正しいです。要求されたスクリプトがロードされたときに呼び出される関数で を作成しましたscriptjQuery1234567890そして、あなたが述べたように、パラメーターはデータを受け取り、それを$.ajax内部に渡し、successコールバックを呼び出します

于 2013-09-25T13:52:35.363 に答える