Masalah
Di dalam callback, thismengacu pada jqXHRobjek panggilan Ajax, bukan elemen yang terikat pada event handler. Pelajari lebih lanjut tentang cara thisbekerja di JavaScript .
Solusi
Jika ES2015 + tersedia untuk Anda, menggunakan fungsi panah mungkin merupakan opsi paling sederhana:
$.ajax({
//...
success: (json) => {
// `this` refers to whatever `this` refers to outside the function
}
});
Anda dapat mengatur contextopsi :
Objek ini akan dijadikan konteks semua callback terkait Ajax. Secara default, konteks adalah objek yang mewakili pengaturan ajax yang digunakan dalam panggilan ( $.ajaxSettingsdigabungkan dengan pengaturan yang diteruskan ke $.ajax). (...)
$.ajax({
//...
context: this,
success: function(json) {
// `this` refers to the value of `context`
}
});
atau gunakan $.proxy:
$.ajax({
//...
success: $.proxy(function(json) {
// `this` refers to the second argument of `$.proxy`
}, this)
});
atau simpan referensi ke nilai di thisluar callback:
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
}
});
Terkait