2012-02-05 6 views
5

で「この」参照($.ajax)。リクエストが成功した後、クラスTaskの特定のメソッド(successFunctionなど)を実行する必要があります。私は「クラス」タスク、それはいくつかの方法があり、jQueryのの助けを借りて、リクエストの送信非同期を含む方法があるのjavascript</p> <p>にオブジェクトプログラミングに少し問題を抱えているJavaScriptの

問題であり、それは文脈が変更されたため、キーワードthisを使用してクラスを参照することは不可能だし、これはを実行jqueryのオブジェクトへの参照を含むsuccessFunction本体の問合せ後ajax-request

直接的には発生せず外部的に存在する関数内の現在のタスクオブジェクトを参照するバリアントは何ですか?

答えて

9

通常、成功コールバックなどのAJAXイベント内では、this$.ajax呼び出しによって返されたオブジェクトを参照します。あなたは成功コールバックにコンテキストを変更するにはcontextパラメータを使用することができます。

$.ajax({ 
    url: '/foo', 
    context: this, // <!-- change the context of the success callback 
    success: function(result) { 
     // 'this' here will refer to whatever it refered outside 
    } 
}); 

ます。また、複雑なオブジェクトを渡すことができます。

$.ajax({ 
    url: '/foo', 
    context: { element: this, foo: 'bar' }, 
    success: function(result) { 
     // you can use 'this.element' and 'this.foo' here 
    } 
}); 
+0

おかげで、それは私が必要とするまさにです。 – JN0iZzze

7

あなたはオブジェクトへの参照を保持する変数を定義することができます。

function Task() { 
    var that = this; 
    this.call = function() { 
    $.ajax({ 
     url: '/foo', 
     success: function(result) { 
     console.log(that); // <-- you cann access this object via that 
     } 
    }); 
    }; 
} 
+0

+1、それは 'that'です。 –

+0

+1、Crockford 'that'スタイル。 – dwerner

関連する問題