正しい場合、errorTextFormatは、HTTPエラーの場合にサーバーの応答を取得し、対応するエラーメッセージを表示する正しい方法です。
まず、サーバーはHTTPヘッダーにHTTP error codeという応答を返す必要があります。 errorTextFormatイベントハンドルの実装をprmEdit
,prmAdd
、prmDel
のいずれかのパラメータ(navGrid)に定義するか、jqGridのデフォルト設定を上書きできます(here参照)。私は個人的にjQuery.jgrid.edit
とjQuery.jgrid.del
の変更によってerrorTextFormatを設定することを好みます。対応するコードの例は、old answerにあります。
正確なコードerrorTextFormatの機能は、のサーバー応答の形式に応じてにする必要があります。私はサイト内でWFCを使用してASP.NET MVCを使用し、サーバーはJSONエンコードされた文字列レスポンス(エラーがthrow new WebFaultException<string> ("my error text", statusCode);
から来た場合は明示的にスローされます)またはいつかのHTML応答を返すことができます。 errorTextFormatの私の実装では、私が受け取ったエラー応答の種類をテストし、サーバーの応答を変換します。コードフラグメントは次のとおりです。
my.errorTextFormat = function (data) {
var str = data.responseText.substr(0, 1);
var str1 = data.responseText.substr(0, 6).toLowerCase();
if (str === '"') {
var errorDetail = jQuery.parseJSON(data.responseText);
var s = "Fehler: '";
s += data.statusText;
s += "'. Details: ";
s += errorDetail;
return s;
}
else if (str1 === "<html " || str1 == "<html>" ||
data.responseText.substr(0, 169) === '<?xml version="1.0" encoding="utf-8"?>\r\n<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r\n<html ') {
var bodyHtml = /<body.*?>([\s\S]*)<\/body>/.exec(data.responseText)[1];
return bodyHtml; //bodyContents1;
}
else {
var res = "Status: '";
res += data.statusText;
res += "'. Felhercode: ";
res += data.status;
return res;
}
};
jQuery.extend(jQuery.jgrid.edit, {
...
errorTextFormat: my.errorTextFormat
});
jQuery.extend(jQuery.jgrid.del, {
...
errorTextFormat: Testportal.errorTextFormat
});
コードは完全ではありませんが、独自のコードを作成するために使用できます。
これは私のために働いていません。私のMVCコントローラは500エラーを返しています。私は編集上で上記のコードを使用しましたが、そのイベントは一度も発生しません。 – aman
@aman:どのコードを正確に使用していますか?どの**バージョン**のjqGridを使用していますか** jqGridの**フォーク**?答えは非常に古くて完全ではありません(例えば、 'var my = {};'は最初の文として存在せず、 'Testportal.errorTextFormat'は原因の' my.errorTextFormat'に置き換えます)。より最近のバージョンのjqGridには*ローカライズされた*メッセージのみが含まれており、 '$ .jgrid.edit'と' $ .jgrid.del'を '$ .jgrid.locales [" en-US "]に置き換える必要があります。 edit'と '$ .jgrid.locales [" en-US "]。del' – Oleg
実際に私はここで質問を提起しました。https://stackoverflow.com/questions/48524588/jqgrid-show-custom-message-on-form -field。そして、この答えが検索されました。あなたは上記のリンクで私のポストを見て、解決策が何であるかを見てください。ありがとう – aman