エラーに適切なHTTPステータスコードを使用し、JSONエンコードされた応答と適切な_Content-Type
_ヘッダーで応答するAPIがあります。私の状況は、error
コールバックではなく、HTTPエラーステータスが発生したときにjQuery.ajax()
がsuccess
コールバックをトリガーするため、わかりやすいJSON応答がある場合でも、このようなものに頼らなければなりません:
_$.ajax({
// ...
success: function(response) {
if (response.success) {
console.log('Success!');
console.log(response.data);
} else {
console.log('Failure!');
console.log(response.error);
}
},
error: function(xhr, status, text) {
var response = $.parseJSON(xhr.responseText);
console.log('Failure!');
if (response) {
console.log(response.error);
} else {
// This would mean an invalid response from the server - maybe the site went down or whatever...
}
}
});
_
各jQuery.ajax()
呼び出しの2つのスポットで同じエラー処理を行うよりも良いパラダイムがありますか?それほど乾燥しているわけではありません。これらのケースでは、エラー処理の適切な実践に関するどこかを見逃しているに違いありません。
チェックアウト jQuery.ajaxError()
これは、さまざまな方法で処理できるグローバルAjaxエラーをキャッチします。
if (jqXHR.status == 500) {
// Server side error
} else if (jqXHR.status == 404) {
// Not found
} else if {
...
または、グローバルエラーハンドラオブジェクトを自分で作成して、呼び出すかどうかを選択できます。
function handleAjaxError(jqXHR, textStatus, errorThrown) {
// do something
}
$.ajax({
...
success: function() { ... },
error: handleAjaxError
});