3

重複の可能性:
$。ajaxコンテキストオプション

次のようなコードがあります。

$.post(self.baseUrl + 'api/method',
        {param1: data},
        function (response) {
            // Do something
        });

自己オブジェクトへの参照をコールバックに渡したいのですが、これは次のようになると思いました。

$.post(self.baseUrl + 'api/method',
        {param1: data},
        function (response, self) {
            // Do something
        });

ただし、このようには機能しません。jQueryのドキュメントには、これを可能にする方法が示されておらず、大まかなGoogle検索では何も見つかりませんでした。これは可能ですか、どうすればできますか?

4

3 に答える 3

5

このメソッドを使用する場合は$.ajax、コンテキストを指定できます。

$.ajax({
    type: "post",
    context: self,
    data: {param1: data},
    success: function (response) {
        console.log(this); // now 'this' refers to self

    }
});
于 2012-09-20T11:24:10.643 に答える
1

@karim79は最良の解決策を示しています。他の可能な方法をいくつか示したいだけです

var App = {
    baseUrl: "http://.../",
    fetchData: function() {
        var self = this;
        $.post(self.baseUrl + 'api/method', {
            param1: data
        }, function(data) {
            self.onDatafetch(data);
            //or
            globalDataFetch(data, self);
        });
    },
    onDatafetch: function(data) {
        this.showMsg();
    },
    showMsg: function() {
        alert("Success");
    }
}

App.fetchData();

function globalDataFetch(data, object){
   // received data and object
}
于 2012-09-20T11:34:40.487 に答える
0

なぜあなたはそのようなsthをしたいのですか?

クロージャーを簡単に使用できます。

var param1 = data;
$.post(self.baseUrl + 'api/method', function (data) {
    // access param1 here
});
于 2012-09-20T11:22:21.947 に答える