問題:
JSON からのエラーを解析する必要がある応答を取得し、jqGrid のダイアログ ボックスに表示します。理想的には、グリッドで「STATUS: 'ERROR'」をチェックし、それに応じてすべてのエラー メッセージを表示する必要があります。
答え:
HTTP プロトコルのガイドラインに従うことが重要です。サーバーとクライアント間で通信するとき。標準の成功応答には次のものが含まれます:
HTTP/1.1 200 OK ... Content-Type: application/json ... {"page":"1",....}
対照的に、URL が存在しない場合、サーバー応答は次で始まります:
HTTP/1.1 404 Not Found
jqGrid は HTTP ステータス コードに依存します。サーバーの応答を処理する方法を決定します。たとえば、404 ステータス コードは、グリッドが JSON データの解釈を試行しないことを示します。
デモ コード:
この概念を実証するには:
$("#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); } });
このコードは次のアラートを表示します:
カスタム エラー処理:
エラー応答を別の方法で処理したい場合は、error を使用できますHTTPステータスコード。以下は、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>
この関数は、既存のエラー div を削除し、グリッドの前に新しい div を挿入してエラー メッセージを表示します。 decodeErrorMessage 関数は、好みの形式でエラー メッセージを処理するようにカスタマイズできます。
displayErrorMessage の使用:
無料の jqGrid には、エラー メッセージを表示するための組み込みの displayErrorMessage メソッドが用意されています。グリッドの上のエラー div。カスタム エラー処理を使用する前に、デフォルトの動作をテストして、ニーズを満たしていることを確認することをお勧めします。
以上がjqGrid でサーバー側のエラーとフォーム検証を処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。