AJAX呼び出しのためのjQueryデフォルトのHTTPエラーハンドラを実装しようとしています。次のように私は、一般的なアプリケーションエラーのデフォルトエラーハンドラを実装しました:特定のステータスコードに対してjQueryのデフォルトajaxErrorをオーバーライドします。
$(document).ajaxError(function(event, jqXHR, settings, thrownError) {
switch (jqXHR.status) {
case 403:
console.log('Forbidden, go away!');
break;
case 404:
console.log('Resource not found :O');
break;
case 422:
console.log('Unprocessable entity.');
break;
case 500:
console.log('Someone have to pay for this!');
break;
default:
console.log('Anyone knows what is going on here?');
}
});
今私が達成したいものを、単一のAJAX呼び出し内の特定のステータスコードをオーバーライドすることです。上記のように、私が実装している場合、私は唯一のThe requested unicorn is actually missing
メッセージを取得しようとしている一方で例
$.ajax({
...
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 404){
console.log('The requested unicorn is actually missing');
}
}
})
のためのように、両方のメッセージは
>The requested unicorn is actually missing
>Resource not found :O
を表示します。
単一のAJAX呼び出し設定でglobal: false
フラグを設定することは、そのAJAX呼び出し内のすべてのグローバルAJAX関数を無視することを意味し、残念ながらそれは私のアプリケーションにとって実行可能な解決策ではありません。
ありがとう!
https://jsfiddle.net/07wzfyyL/グローバルオプションは、チェックを働いている必要がありますすることができますこのフィドルから – Rex
jQuery docs: 'global:このリクエストに対してグローバルAjaxイベントハンドラをトリガするかどうか。デフォルトはtrueです。 ajaxStartまたはajaxStopのようなグローバルハンドラがトリガされないようにするには、falseに設定します。これは、さまざまなAjaxイベントを制御するために使用できます。この振る舞いは、どんな場合でもグローバルハンドラの実行を防ぎます!ここで必要なのは、単一のajax呼び出しで処理された場合は特定のステータスコードのみをオーバーライドし、HTTPコードがアプリケーションを通じて処理されない場合にのみデフォルトのハンドラを実行することです。 – Desh901