2012-02-05 14 views
5

में 'इस' संदर्भ, यह कई तरीकों, एक विधि एक अतुल्यकालिक JQuery के मदद से एक अनुरोध भेजने से युक्त है ($.ajax)। अनुरोध सफलता के बाद कक्षा कार्य के एक विशेष विधि (जैसे सफलता समारोह) करना आवश्यक है।मैं वस्तु प्रोग्रामिंग में एक छोटे से समस्या</p> <p>है जावास्क्रिप्ट में एक "वर्ग" टास्क है जावास्क्रिप्ट

समस्या है, successFunction के शरीर यह, वर्ग कीवर्ड this का उपयोग कर का उल्लेख करने क्योंकि संदर्भ बदल गया है असंभव है, और यह जो एक करता jQuery-वस्तु का संदर्भ होता है में क्वेरी के बाद AJAX-अनुरोध

वर्तमान कार्य ऑब्जेक्ट को किसी फ़ंक्शन के अंदर संदर्भित करने के लिए कौन से प्रकार सीधे नहीं बल्कि बाहरी रूप से मौजूद थे? (उदाहरण के लिए एक घटना या AJAX द्वारा)

उत्तर

9

आम तौर पर सफलता कॉलबैक, this जैसे AJAX ईवेंट के अंदर $.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

धन्यवाद, कि मैं वास्तव में क्या जरूरत है। '12' के लिए – 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। –

+0

+1, क्रॉकफ़ोर्ड 'वह' शैली। – dwerner

संबंधित मुद्दे