Ajax pemapar dokumen drupal hosting
Adakah terdapat beberapa cara yang saya boleh menunjukkan mesej pengecualian adat sebagai makluman dalam mesej ralat jQuery AJAX saya?
Sebagai contoh, jika saya mahu membuang pengecualian di sebelah pelayan melalui Struts dengan membuang ApplicationException baru ( "Nama Pengguna sudah wujud") ;. Saya mahu untuk menangkap pesanan ini ( 'nama pengguna sudah wujud') dalam mesej ralat jQuery AJAX.
Berjaga-jaga yang kedua, di mana saya memberi amaran kepada ralat yang dilemparkan, saya sedang mendapat undefined dan kod status 500.
Saya tidak pasti ke mana Aku pergi salah. Apa yang boleh saya lakukan untuk menyelesaikan masalah ini?
Penyelesaian am / boleh diguna semula
Jawapan ini disediakan untuk rujukan masa depan untuk semua orang-orang yang bertemu masalah ini. Penyelesaian terdiri daripada dua perkara:
- pengecualian ModelStateException adat yang akan dibuang apabila pengesahan gagal pada pelayan (model kesilapan laporan negeri pengesahan apabila kita menggunakan anotasi data dan menggunakan parameter tindakan pengawal bertaip kuat)
- Custom tindakan pengawal ralat HandleModelStateExceptionAttribute penapis yang menangkap pengecualian adat dan mengembalikan status ralat HTTP dengan keadaan ralat model dalam badan
Ini menyediakan infrastruktur yang optimum untuk jQuery Ajax panggilan untuk menggunakan potensi penuh mereka dengan Pengendali kejayaan dan kesilapan.
Pelanggan kod sampingan
Server kod sampingan
Masalah keseluruhan diperincikan dalam ini blog post di mana anda boleh mencari semua kod untuk menjalankan ini dalam permohonan anda.
Saya percaya sambutan pengendali Ajax menggunakan kod status HTTP untuk memeriksa jika terdapat ralat.
Jadi jika anda hanya membuang pengecualian Java pada kod sebelah pelayan anda tetapi kemudian sambutan HTTP tidak mempunyai kod jQuery 500 status (atau dalam kes ini mungkin objek XMLHttpRequest itu) hanya akan menganggap bahawa semuanya baik.
Saya katakan ini kerana saya mempunyai masalah yang sama dalam ASP.NET di mana saya telah membuang sesuatu seperti ArgumentException ( "Tidak tahu apa yang perlu dilakukan.") Tetapi kesilapan pengendali itu tidak menembak.
Saya kemudian menetapkan Response.StatusCode untuk sama ada 500 atau 200 sama ada saya mempunyai kesilapan atau tidak.
menjawab 19 Dis '08 di 14:11
jQuery.parseJSON berguna untuk kejayaan dan kesilapan.
menjawab Ogos 11 '11 di 22:18
Membuang pengecualian baru pada pelayan menggunakan:
Saya percaya bahawa StatusDescription itu dikembalikan kepada panggilan Ajax.
menjawab Mac 6 '14 di 18:07
Jika terdapat apa-apa bentuk adalah menerima dengan validate
hanya menggunakan sepanjang kod di
menjawab Mac 9 '14 di 17:31
Walaupun sudah bertahun-tahun sejak soalan ini ditanya, saya masih tidak mencari xhr.responseText sebagai jawapan yang saya cari. Ia kembali saya rentetan dalam format berikut:
yang saya pasti tidak mahu untuk menunjukkan kepada pengguna. Apa yang saya cari adalah sesuatu seperti di bawah:
xhr.responseJSON.message memberi saya mesej yang tepat dari Objek JSON yang boleh ditunjukkan kepada pengguna.
menjawab Jun 24 '16 di 02:05
Mula-mula kita perlu menetapkan
Di samping itu di peringkat jquery dalam kesesatan sebahagian anda perlu menghuraikan respons ralat yang mengandungi pengecualian seperti:
Kemudian menggunakan r.Message anda actully boleh menunjukkan teks terkecuali.
menjawab Mei 9 '12 di 08:41
Anda mempunyai objek JSON pengecualian yang dibuang, dalam objek XHR itu. hanya menggunakan
Objek JSON mendedahkan dua hartanah lain: 'ExceptionType' dan 'surih tindanan'
menjawab 23 Feb di 10:33
2017 Stack Exchange, Inc