Masalah:
Anda perlu menghuraikan ralat daripada JSON respons dan paparkannya dalam kotak dialog dalam jqGrid anda. Sebaik-baiknya, anda mahu grid menyemak "STATUS: 'ERROR'" dan menunjukkan semua mesej ralat dengan sewajarnya.
Jawapan:
Adalah penting untuk mengikuti garis panduan protokol HTTP apabila berkomunikasi antara pelayan dan klien. Respons standard yang berjaya termasuk yang berikut:
HTTP/1.1 200 OK ... Content-Type: application/json ... {"page":"1",....}
Sebaliknya, jika URL tidak wujud, respons pelayan akan bermula dengan:
HTTP/1.1 404 Not Found
jqGrid bergantung pada kod status HTTP untuk menentukan cara mengendalikan respons pelayan. Sebagai contoh, kod status 404 menunjukkan bahawa grid tidak akan cuba mentafsir data JSON.
Kod Demo:
Untuk menunjukkan konsep ini:
$("#list").jqGrid({ url: 'Unknown.json', // file with this name doesn't exist datatype: 'json', // ... other relevant parameters loadComplete: function () { alert("OK"); }, loadError: function (jqXHR, textStatus, errorThrown) { alert('HTTP status code: ' + jqXHR.status + '\n' + 'textStatus: ' + textStatus + '\n' + 'errorThrown: ' + errorThrown); alert('HTTP message body (jqXHR.responseText): ' + '\n' + jqXHR.responseText); } });
Kod ini akan memaparkan makluman berikut:
Ralat Tersuai Pengendalian:
Jika anda mahu mengendalikan respons ralat secara berbeza, anda boleh menggunakan kod status HTTP ralat. Di bawah ialah versi lanjutan pelaksanaan loadError:
loadComplete: function () { // remove error div if it exists $('#' + this.id + '_err').remove(); }, loadError: function (jqXHR, textStatus, errorThrown) { // remove error div if it exists $('#' + this.id + '_err').remove(); // insert div with the error description before the grid $(this).closest('div.ui-jqgrid').before( '<div>
Fungsi ini mengalih keluar sebarang div ralat sedia ada, kemudian memasukkan div baharu sebelum grid untuk memaparkan mesej ralat. Fungsi decodeErrorMessage boleh disesuaikan untuk mengendalikan mesej ralat dalam format pilihan anda.
Menggunakan displayErrorMessage:
JqGrid percuma menyediakan kaedah displayErrorMessage terbina dalam untuk memaparkan mesej ralat dalam div ralat di atas grid. Sebelum menggunakan pengendalian ralat tersuai, adalah disyorkan untuk menguji kelakuan lalai untuk memastikan ia memenuhi keperluan anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat Sisi Pelayan dan Pengesahan Borang dalam jqGrid?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!