jQueryのajaxのレスポンス待ち中にページ遷移するとerrorになるのを何とか回避する方法
まず、題が何を言っているかというと
そのレスポンスが帰ってくる前にページ遷移やブラウザのリロードをすると
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時にそいつを見てやればページ遷移のときのエラーかどうかがわかるようですね。