0

JqG​​rid 4.4.5 は、リモート json データを使用して設定されます。jqGrid loadError メソッドは次のように定義されます

loadError: function LoadErrorHandler(jqXHR, textStatus, errorThrown) {
  alert('Load error ' + JSON.stringify(jqXHR) + '\n status ' + textStatus +
                  '\n error ' + errorThrown);
  }

ページのブラウザの更新ボタンをすばやく押すか、F5 キーを Chrome で押し続けると、メソッドで定義されたモーダル アラート ボックスが表示されます。

Chrome でこのアラート ボックスを無効にする方法は? ページがリロード状態にあると判断し、このボックスやその他のアイデアを表示しないようにすることはできますか?

FireFox ではアラート ボックスが点滅するだけで、IE 10 では発生しません。これは Chrome のみの問題のようです。

この場合、渡されるパラメーター値は次のとおりです。

jqXHR: {"readyState":0,"responseText":"","status":0,"statusText":"error"} 
textStatus:  error 
4

1 に答える 1

0

It's difficult to write advices about the case which can't be clear reproduced.

Probably you use virtual scrolling and have some effects existing only in the case? If it is so you can try repeat the same test without usage of scroll: 1 or scroll: true.

別の理由として、一部の Web ブラウザーがabortのメソッドを呼び出していることが考えられますjqXHR。異なるバージョンの jQuery でコードをテストすることをお勧めします。ほとんどの場合、textStatus === "abort"またはerrorThrown === "abort"(回答を参照) がありますが、jQuery のバージョンが異なると違いがある可能性があります。内部にブレークポイントを設定しloadError、誰がそれを呼び出したか、jQuery が本当に中止されたかどうかを調べることをお勧めします。

jqXHR.status === 0には別の理由がある可能性があります。XMLHttpRequest仕様に対応し、ネットワークエラー時にこのようなエラーが発生します。古いバージョンの jQuery (私の古い回答を参照) にはバグがあり、ネットワーク エラーは「成功」と解釈されました。jQuery の新しいバージョンではバグが修正され、ネットワーク エラーが発生した場合にコールバックerror(など) が呼び出されるようになりました。loadErrorさまざまなケースを分析した後、使用する実装を変更することを検討できloadErrorます。たとえば、次のような追加の条件を含める必要があります

loadError: function (jqXHR, textStatus, errorThrown) {
    if (textStatus !== "abort" && errorThrown !== "abort") {
        // display alert
    }
}

または、ケースjqXHR.status === 0とについて追加でテストすることもできますjqXHR.readyState === 0こちらも参照)。いずれにしても、特定のバージョンの jQuery でケースを注意深くテストすることをお勧めします。

于 2013-05-05T17:11:41.440 に答える