gpt4 book ai didi

javascript - 覆盖特定状态代码的 jQuery 默认 ajaxError

转载 作者:行者123 更新时间:2023-12-01 02:52:08 25 4
gpt4 key购买 nike

我正在尝试为 AJAX 调用实现 jQuery 默认 HTTP 错误处理程序。我已经为一般应用程序错误实现了默认错误处理程序,如下所示:

$(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 调用中覆盖特定的状态代码。例如

$.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

当我只想获取请求的独 Angular 兽实际上丢失了消息时。

在单个 AJAX 调用设置中设置 global: false 标志意味着忽略该 AJAX 调用中的所有全局 AJAX 函数,不幸的是,这对于我的应用程序来说不是一个可行的解决方案。

有什么想法吗?谢谢!

最佳答案

您可以执行以下操作

$.ajax({
handleErrors: [404],
...
error: function(jqXHR, textStatus, errorThrown) {
if(jqXHR.status === 404){
console.log('The requested unicorn is actually missing');
}
}
});

然后在全局处理程序中检查错误是否已处理

$(document).ajaxError(function(event, jqXHR, settings, thrownError) {
if (settings.handleErrors && settings.handleErrors.indexOf(jqXHR.status) !== -1) {
return;
}
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?');
}
});

关于javascript - 覆盖特定状态代码的 jQuery 默认 ajaxError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42623930/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com