1. ホーム
  2. jquery

[解決済み] Jquery Ajaxのエラー処理で中断を無視する方法

2023-05-08 20:54:47

質問

私はajaxコールのためのグローバルなエラー処理メソッドを持ちたいのですが、これは私が今持っているものです。

$.ajaxSetup({
  error: function (XMLHttpRequest, textStatus, errorThrown) {
    displayError();
  }
});

のエラーを無視する必要があります。 aborted . errorThrown は null であり textStatuserror . をチェックするにはどうすればよいのでしょうか? aborted ?

どのように解決するのですか?

私は今日、同じユースケースに対処する必要がありました。私が取り組んでいるアプリには、1) ユーザーがナビゲートする、または 2) ある種の一時的な接続/サーバー障害によって中断される可能性のある、長時間実行される ajax 呼び出しがあります。私は、エラーハンドラを、ユーザーが移動したときではなく、接続/サーバーの障害に対してのみ実行させたいと思います。

私は最初に Alastair Pitts の回答を試しましたが、リクエストが中断され、接続の失敗がステータスコードと readyState を 0 に設定するので、うまくいきませんでした。

私のために働いた唯一の解決策は、ページがアンロードされたことを示すためにグローバル変数を設定する window.onbeforeunload のリスナーを設定することです。エラー ハンドラは、ページがアンロードされていない場合にのみチェックし、エラー ハンドラを呼び出すことができます。

var globalVars = {unloaded:false};
$(window).bind('beforeunload', function(){
    globalVars.unloaded = true;
});
...
$.ajax({
    error: function(jqXHR,status,error){
        if (globalVars.unloaded)
            return;
    }
});