目指せ非プログラマー

もう何でもごじゃれ言語

jQueryのajaxのレスポンス待ち中にページ遷移するとerrorになるのを何とか回避する方法

まず、題が何を言っているかというと

 

あるリクエストをjQueryの$.ajaxを使っている場合

そのレスポンスが帰ってくる前にページ遷移やブラウザのリロードをすると

error : function(xhr, type, errorThrown){

  alert("error");

}

を通ります。

ここでalert("error");が実行されてしまいます。

 

これは困ったね。どうやって回避したものか?

 

というものです。

 

typeがabortだったらいいのですが、ページ遷移時やリロードじはerrorのようです。

 

Google先生に聞いたところこんなページを発見しました。

jquery - handle ajax error when a user clicks refresh - Stack Overflow

 

answered Aug 19 '12 at 23:17

の奴がうまくいくようですね。

 

本当かな?

 

ちなみにbeforeunloadが対応していないブラウザはあるようです。

というか、私の調べではIE系は対応してるけどそれ意外は怪しい

window.onpagehide = function(){};

の中で処理してやるといいでしょう。

 

 

ということで、

IE系

window.onbeforeunload = function(){};

それ以外

window.onpagehide = function(){};

で、フラグをいじって

ajaxのerror時にそいつを見てやればページ遷移のときのエラーかどうかがわかるようですね。