-1

このjquery関数を通常のjavascriptとしてどのように書き換えますか?

$(document).ready(function() {
    $.ajax({
        url: 'http://192.168.1.103:8124/',
        dataType: "jsonp",
        jsonpCallback: "_testcb",
        cache: false,
        timeout: 5000,
        success: function(data) {
            $("#test").append(data);
        },
        error: function(jqXHR, textStatus, errorThrown) {
            alert('error ' + textStatus + " " + errorThrown);
        }
    });
});

特に

  jsonpCallback: "_testcb",
         cache: false,

元の間違った質問: xmlhttprequest オブジェクトのプロパティを設定して、通常の JavaScript を使用して JsonP コールバックを受信するにはどうすればよいですか?

更新された正しい質問: 「Pure Javascript」で JsonP コールバックを作成するにはどうすればよいですか?

4

2 に答える 2

3

リクエストを送信し、ブラウザーの Web 開発者ツールでどのように表示されるかを確認します。

ここに画像の説明を入力

したがって、jQuery のキャッシュ防止動作を模倣するために、AJAX 要求を送信するときに URL にタイムスタンプ パラメーターを追加できます。

jsonp(url + '&_=' + (new Date).getTime());

JSONP コールバックに関しては、callbackパラメーターを渡すだけです。

jsonp(url + '?callback=' + callback_name);

ブラウザは基本的に を呼び出すeval(callback_name + '(' + response + ')');ので、コールバック関数がグローバルであることを確認してください。

于 2013-04-26T00:28:28.310 に答える
0

アップデート:

少し掘り下げた後、この投稿から同等のものを見つけました:

function foo(data)
{
    // do stuff with JSON
}

var script = document.createElement('script');
script.src = '//example.com/path/to/jsonp?callback=foo'

document.getElementsByTagName('head')[0].appendChild(script);
// or document.head.appendChild(script) in modern browsers

魔法のように動作します!

于 2013-04-26T16:36:45.987 に答える