1

間違ったデータを送信しても、JQGrid はフォームにエラーを表示しません。私のローカルマシンでは動作しますが、本番環境では動作しません。以前は本番環境で機能していましたが、ここ数か月でいくつかの変更を加えましたが、どの変更がそれを壊したのかわかりません。JQGrid 4.4.1、jquery 1.7.2、および MVC 4 を使用しています。ブラウザーのエラーは次のように表示されます。

Uncaught SyntaxError: Unexpected token < jquery%20-1.7.2.min.js:3
e.extend.parseJSON jquery%20-1.7.2.min.js:3
editItems.errorTextFormat WaterReadingCapture:1291
$.extend.complete jquery.jqGrid.src.js:7572
o jquery%20-1.7.2.min.js:3
p.fireWith jquery%20-1.7.2.min.js:3
w jquery%20-1.7.2.min.js:10
d jquery%20-1.7.2.min.js:10

編集

これは私がサーバーから取得しているものです。本文に this を含む Html ページ。RazorEngineもアップグレードしました。問題はサーバーにあり、jquery と jqgrid とは関係ありませんか? しかし、prod からサイト全体をコピーし、ローカル マシンで実行したところ、機能しました。

<h2>500 - Internal server error.</h2>
  <h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>

WaterReadingキャプチャ

 errorTextFormat: function (data) {
                      return '<span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>' +
                     "<strong>" + $.parseJSON(data.responseText).Message + "<strong>";
                   },

JQグリッド

if(Status != "success") {
    ret[0] = false;
    ret[1] = $($t).triggerHandler("jqGridAddEditErrorTextFormat", [data, frmoper]);
    if ($.isFunction(rp_ge[$t.p.id].errorTextFormat)) {
        ret[1] = rp_g
    e[$t.p.id].errorTextFormat.call($t, data);
    } else {
        ret[1] = Status + " Status: '" + data.statusText + "'. Error code: " + data.status; // line of error
    }

} そうしないと {

編集 6か月前のバックアップを復元しましたが、それでも同じエラーが発生し、その時点で機能していることがわかります。したがって、IIS またはサーバーの何かが変更されました。助けてくれてありがとう

4

2 に答える 2

0

問題は、使用する実装にerrorTextFormatあると思います。dataパラメータは、オブジェクトのjqXHRスーパーセットであるXMLHTTPRequestオブジェクトです。どちらもgetResponseHeaderメソッドをサポートしており、サーバーからの応答に JSON データまたは HTML データが含まれているかどうかを検出するために使用できます。したがって、次のようなものをテストできます

errorTextFormat: function (data) {
    var contentType = xhr.getResponseHeader("Content-Type");
    if (typeof contentType === string &&
            contentType.split(";")[0] === "application/json") {
        // you can use $.parseJSON(data.responseText) here
        return '<span class="ui-icon ui-icon-alert" ' +
           'style="float: left; margin-right: .3em;"></span>' +
           "<strong>" + $.parseJSON(data.responseText).Message + "<strong>";
    }
    return data.responseText;
}

contentType.split(";")[0]「Content-Type」ヘッダーは または のいずれ"application/json; charset=utf-8"かになる可能性があるため、使用しました"application/json"

于 2013-10-24T15:09:08.403 に答える