Bagaimana cara menangani pengecualian yang dilemparkan ke pengontrol ketika jquery ajax memanggil tindakan?
Misalnya, saya ingin kode javascript global yang dijalankan pada semua jenis pengecualian server selama panggilan ajax yang menampilkan pesan pengecualian jika dalam mode debug atau hanya pesan kesalahan normal.
Di sisi klien, saya akan memanggil fungsi pada kesalahan ajax.
Di sisi server, Apakah saya perlu menulis filter tindakan kustom?
asp.net-mvc
jquery
asp.net-mvc-3
Shawn Mclean
sumber
sumber
Jawaban:
Jika server mengirimkan beberapa kode status berbeda dari 200, callback kesalahan dijalankan:
dan untuk mendaftarkan penangan kesalahan global Anda dapat menggunakan
$.ajaxSetup()
metode:Cara lain adalah dengan menggunakan JSON. Jadi Anda bisa menulis filter tindakan kustom di server yang menangkap pengecualian dan mengubahnya menjadi respons JSON:
lalu hiasi tindakan pengontrol Anda dengan atribut ini:
dan akhirnya memanggilnya:
sumber
error
callback akan dijalankan.Setelah googling saya menulis penanganan Exception sederhana berdasarkan MVC Action Filter:
dan tulis di global.ascx:
lalu tulis skrip ini di layout atau halaman Master:
Akhirnya Anda harus mengaktifkan kesalahan khusus. dan kemudian nikmati :)
sumber
Sayangnya, tidak ada jawaban yang baik untuk saya. Ternyata solusinya jauh lebih sederhana. Kembali dari pengontrol:
Dan menanganinya sebagai kesalahan HTTP standar pada klien sesuka Anda.
sumber
int
. Juga, ketika saya melakukan ini, hasilnya akan diteruskan keajax
success
pawang, dan bukanerror
pawang. Apakah ini perilaku yang diharapkan?Saya melakukan solusi cepat karena saya kekurangan waktu dan berhasil dengan baik. Meskipun menurut saya opsi yang lebih baik adalah menggunakan Filter Pengecualian, mungkin solusi saya dapat membantu jika solusi sederhana diperlukan.
Saya melakukan hal berikut. Dalam metode pengontrol saya mengembalikan JsonResult dengan properti "Sukses" di dalam Data:
Kemudian dalam panggilan ajax saya hanya meminta properti ini untuk mengetahui apakah saya memiliki pengecualian:
Semoga ini membantu. Selamat kode! : P
sumber
Sesuai dengan tanggapan aleho, berikut adalah contoh lengkapnya. Ini bekerja seperti pesona dan sangat sederhana.
Kode pengontrol
Kode Javascript dalam tampilan
Semoga ini bisa membantu orang lain!
sumber
Untuk menangani kesalahan dari panggilan ajax di sisi klien, Anda menetapkan fungsi ke
error
opsi panggilan ajax.Untuk menyetel default secara global, Anda dapat menggunakan fungsi yang dijelaskan di sini: http://api.jquery.com/jQuery.ajaxSetup .
sumber