1

Chromeで次の問題が発生します:ajaxリクエスト中にページでアンカーをクリックすると(他のページにリダイレクトされます)、エラーハンドラーが呼び出されます。それが本当のエラーかどうかを判断したいと思います。

  • アボートハンドラーは呼び出されません
  • エラーは空です
  • xhr.statusは0です
  • xhr.statusTextは「エラー」です

コード:

$.ajaxSetup({
    error: function (xhr, status, error) {
        ...
    },
    abort: function () {
        ...
    }
});
4

1 に答える 1

3

onbeforeunloadイベントを使用して、ページがアンロードされる前にすべての要求を中止します。このようにして、status = 'abort'の代わりにを取得status = 'error'error: function(xhr, status, error){}ます。

var request;

window.onbeforeunload = function() {
    if(request !== undefined) {
        request.abort();
    }
}

request = $.ajax({ ... });

例私はこのソリューションを次のようにテストしました:

http://jsfiddle.net/vLrYm/7/

于 2012-07-26T10:01:17.550 に答える