Ada yang bisa bantu saya?
Saya tidak dapat memahami perbedaan antara success
dan .done()
dari $.ajax
.
Jika memungkinkan tolong beri contoh.
jquery
jquery-deferred
Poonam Bhatt
sumber
sumber
Jawaban:
Singkatnya, memisahkan fungsi callback yang berhasil dari fungsi ajax sehingga nanti Anda dapat menambahkan penangan Anda sendiri tanpa mengubah kode asli (pola pengamat).
Temukan informasi lebih rinci dari sini: https://stackoverflow.com/a/14754681/1049184
sumber
success:
digunakan sebagai parameter dan.success()
sebagai metode padajqXHR
. Yang terakhir sudah tidak digunakan lagi, tapi yang pertama adalah pertanyaan OP.success
hanya aktif jika panggilan AJAX berhasil, yaitu pada akhirnya mengembalikan status HTTP 200.error
aktif jika gagal dancomplete
saat permintaan selesai, terlepas dari keberhasilannya.Di jQuery 1.8 pada
jqXHR
objek (dikembalikan oleh$.ajax
)success
diganti dengandone
,error
denganfail
dancomplete
denganalways
.Namun Anda masih bisa menginisialisasi permintaan AJAX dengan sintaks lama. Jadi ini melakukan hal serupa:
Perubahan ini untuk kompatibilitas dengan objek yang ditangguhkan jQuery 1.5 . Deferred (dan sekarang
Promise
, yang memiliki dukungan browser asli penuh di Chrome dan FX) memungkinkan Anda untuk melakukan tindakan asinkron:Rantai fungsi ini lebih mudah dikelola daripada piramida callback bersarang yang Anda dapatkan
success
.Namun, harap diperhatikan bahwa
done
sekarang sudah tidak digunakan lagi karena mendukungPromise
sintaks yang menggunakanthen
:Ini layak diadopsi karena
async
danawait
memperpanjang janji meningkatkan sintaksis (dan penanganan kesalahan):sumber
success
, di jQuery 1.8 sudah diganti dengandone
. Mereka bekerja dengan cara yang sama, tetapidone
lebih konsisten dengan jQuery lainnya..done
adalah tusukan awal jQuery (dan sekarang buntu) pada apa yang menjadiPromise
dan yang sekarang memiliki dukungan bahasa yang cukup komprehensif. Dalam proyek baru, saya akan menggunakanconst response = await fetch(...)
sebagai gantinya..success()
hanya dipanggil jika server web Anda merespons dengan header HTTP 200 OK - pada dasarnya saat semuanya baik-baik saja.Callback yang dilampirkan ke done () akan diaktifkan saat penangguhan diselesaikan. Callback yang dilampirkan ke fail () akan diaktifkan saat penangguhan ditolak.
sumber
success
adalah callback yang dipanggil saat permintaan berhasil dan merupakan bagian dari$.ajax
panggilan.done
sebenarnya adalah bagian darijqXHR
objek yang dikembalikan oleh$.ajax()
, dan menggantikansuccess
di jQuery 1.8.sumber