2

jsonp Ajax 呼び出しのコールバックで特定のコンテキストを指定することは可能ですか?

私が見つけた唯一の方法は、コールバック名を指定することですが、それを実装しないため、コールバックは目的のコンテキストで成功メソッドに入ります。

    $.ajax({
        type: "GET",
        url: 'someurl',
        dataType: 'jsonp',
        jsonpCallback: 'myCallbackName',
        context: this,
        success: function (response) {
                   console.log(this); //this must be the context specified earlier
        }
    });

問題は、機能している場合でも、多くのエラーが発生することです。

TypeError: myCallbackName は関数ではありません

エラーを発生させずにこれを達成する方法のアイデアはありますか?

ありがとう

エティエンヌ

4

2 に答える 2

2

これでうまくいくはずです:

$.ajax({
    type: "GET",
    url: 'someurl',
    dataType: 'jsonp',
    jsonpCallback: 'myCallbackName',
    context: this,
    success: delegate(this, function (response) {
        console.log(this); //this must be the context specified earlier
    })
});

var delegate = function(context, func) {
    return function() {
        return func.apply(context, arguments);
    }
}

ただし、myCallbackNameが定義されていないため、 TypeError: myCallbackName is not a functionが発生します。追加するだけ

var myCallbackName  = function() { }

PS JavaScript での委任の詳細については、こちらをご覧ください。

于 2013-09-24T18:22:20.440 に答える