5

次のコードを使用して、サーバーからクライアントにデータを非同期的にプルしています。エラーブロックのアラートは、サーバーで発生したエラーを報告します。ただし、ユーザーが通話中にページページから移動すると、このブロックも起動され、空のアラートコンテナがスローされます。ユーザーがページを離れるのをより適切に処理する方法はありますか(つまり、ユーザーが離れる前に空のアラートをスローしない)?サーバーで発生したエラーではなく、ユーザーが移動したエラーブロックを区別することでしょうか。

$.ajax({
    type: "GET",
    url: "/handlers/myHandler.ashx",
    async: true,
    dataType: "json",
    data: "var1=test_val&var2=test_val"
    success: function (invoices) {
       //Success block
    },
    error: function (XMLHttpRequest, textStatus, errorThrown) {
        alert(errorThrown);
    }
});
4

2 に答える 2

4

試す...

if (xhr.status != 0)
  alert(thrownError);

...ここで、xhrはXMLHttpRequest変数です

于 2013-08-01T00:17:20.550 に答える
1

問題が解決しました..

グローバル変数を設定しました:

var unloadingState = false;

次にbeforeunload、変数を変更するためのイベントハンドル(Daveに感謝します!):

$(window).bind("beforeunload", function () {
    unloadingState = true;
});

そして最後に、ajaxメソッドのエラーブロックの相互参照:

error: function (XMLHttpRequest, textStatus, errorThrown) {
  if (!unloadingState) {
    alert(errorThrown);
  }
}

そして、はいアラートは醜いので使用すべきではありません!

于 2013-03-11T11:15:38.110 に答える