संकट
कॉलबैक के अंदर, अजाक्स कॉल thisके jqXHRऑब्जेक्ट को संदर्भित करता है , न कि उस इवेंट हैंडलर को जिसके लिए बाध्य किया गया था। जावास्क्रिप्ट में कैसे thisकाम करता है, इसके बारे में और जानें ।
समाधान
यदि ES2015 + आपके लिए उपलब्ध है, तो तीर फ़ंक्शन का उपयोग करना संभवतः सबसे आसान विकल्प होगा:
$.ajax({
//...
success: (json) => {
// `this` refers to whatever `this` refers to outside the function
}
});
आप contextविकल्प सेट कर सकते हैं :
इस ऑब्जेक्ट को सभी अजाक्स-संबंधित कॉलबैक के संदर्भ में बनाया जाएगा। डिफ़ॉल्ट रूप से, संदर्भ एक ऑब्जेक्ट है जो कॉल में उपयोग किए गए अजाक्स सेटिंग्स का प्रतिनिधित्व करता है ( $.ajaxSettingsमर्ज किए गए सेटिंग्स के साथ विलय $.ajax)। (...)
$.ajax({
//...
context: this,
success: function(json) {
// `this` refers to the value of `context`
}
});
या उपयोग $.proxy:
$.ajax({
//...
success: $.proxy(function(json) {
// `this` refers to the second argument of `$.proxy`
}, this)
});
या thisकॉलबैक के बाहर के मूल्य का संदर्भ रखें :
var element = this;
$.ajax({
//...
success: function(json) {
// `this` refers to the jQXHR object
// use `element` to refer to the DOM element
// or `$(element)` to refer to the jQuery object
}
});
सम्बंधित