Saya memiliki kode seperti ini:
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID },
success: function (data) {
$('#CityID').html(data);
},
error: function (ajaxContext) {
alert(ajaxContext.responseText)
}
});
Tetapi ketika saya melihat .ajax()
dokumentasi jQuery di bagian akhir sepertinya menyarankan saya harus mengkode seperti ini di bawah ini atau setidaknya itu menyarankan menambahkan .done()
dan .fail()
:
var request = $.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
});
request.done(function (data) {
xxx;
});
request.fail(function (jqXHR, textStatus) {
xxx;
});
Memperbarui
Jika saya kode seperti ini apakah itu sama atau ada beberapa keuntungan untuk memecahnya menjadi tiga?
$.ajax({ cache: false,
url: "/Admin/Contents/GetData",
data: { accountID: AccountID }
}).done(function (data) {
xxx;
}).fail(function (jqXHR, textStatus) {
xxx;
});
.error
,.success
) Yang tidak digunakan lagi untuk pola Ditangguhkan yang lebih universal, tetapi parameter padaajax
metode ini tidak ditinggalkan dan keduanya valid dan dapat diterima - bahkan di jQuery 1.9 / 2.0! Dalam semua bentuk saat ini,ajax
masih mengembalikan Ditangguhkan; mungkin dengan Callback tangguhan yang sudah terpasang.jqXHR.success = jqXHR.done;
.success
,fail
,always
.Saya ingin menambahkan sesuatu di pos @Michael Laffargue:
jqXHR.done()
lebih cepat!jqXHR.success()
memiliki beberapa waktu buka dalam panggilan balik dan kadang-kadang dapat melebihi batas skrip. Saya menemukan itu di jalan yang sulit sebelumnya.MEMPERBARUI:
Menggunakan
jqXHR.done()
,jqXHR.fail()
danjqXHR.always()
Anda dapat memanipulasi dengan lebih baik dengan permintaan ajax. Secara umum Anda dapat mendefinisikan ajax di beberapa variabel atau objek dan menggunakan variabel atau objek itu di bagian mana pun dari kode Anda dan mendapatkan data lebih cepat. Contoh yang baik:sumber
Dengan kata-kata sederhana
jika mendapatkan info.text maka ia akan memberitahukan dan fungsi apa pun yang Anda tambahkan atau jika ada bagaimana tidak dapat mengambil info.text dari server maka waspada atau fungsi kesalahan.
sumber
Ketika kita akan memigrasi JQuery dari 1.x ke 2x atau 3.x di aplikasi lama kita yang sudah ada, maka kita akan menggunakan .done, .fail bukannya berhasil, kesalahan karena gradasi JQuery ke atas akan ditinggalkan metode ini. Untuk contoh ketika kita melakukan panggilan ke metode web server maka server mengembalikan objek janji ke metode panggilan (metode Ajax) dan objek janji ini berisi metode .done, .fail..etc. Oleh karena itu kita akan melakukan hal yang sama untuk keberhasilan dan kegagalan respons. Di bawah ini adalah contohnya (ini untuk permintaan POST dengan cara yang sama kita dapat membangun untuk jenis permintaan seperti GET ...)
sumber