Jquery ajaxsetup:仅捕获 401 错误,否则让自定义错误处理程序完成工作
Jquery ajaxsetup: Catch only 401 error else let the custom error handler do the job
我有一个复杂的应用程序 (.NET 5 MVC 5),它执行各种 ajax 调用。
我想在全球范围内只处理 401 个未经授权的请求。
这段经典代码在全球范围内都能发挥作用
$.ajaxSetup({
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 401) {//Unauthorized
//it will redirect to the same document, so authentication will take place and will go back to login
window.location.href = document.URL;
}
}
});
但是它在全局范围内捕获所有内容,而我只需要它捕获 401 并让定义的错误函数完成其余的工作。
我的意思是,比如我有:
function dropYear_changed(data) {
$.ajax({
url: '@Url.Action("aaa", "vvv")',
type: "get",
contentType: 'application/x-www-form-urlencoded',
data: data,
success: function (result) {
//Do stuff
},
error: function(error) {
//show some alert, toast, do error stuff
}
});
}
全局 ajax 它不会做
//show some alert, toast, do error stuff
因为 ajax安装程序将接管。
我想在全球范围内捕获 401,但如果错误不是 401,则执行其他操作,并且在 ajax 错误中定义了其他内容:
我该怎么做?
您只能在 $.ajaxSetup 中使用 statusCode 函数捕获特定错误。试试下面的代码:
$.ajaxSetup({
statusCode: {
401: function() {
alert("401");
}
}
});
当响应状态为 401 时,此函数会发出警报。这样您就可以全局捕获 401,如果错误不是 401,则执行其他操作。
我有一个复杂的应用程序 (.NET 5 MVC 5),它执行各种 ajax 调用。 我想在全球范围内只处理 401 个未经授权的请求。
这段经典代码在全球范围内都能发挥作用
$.ajaxSetup({
error: function (jqXHR, textStatus, errorThrown) {
if (jqXHR.status == 401) {//Unauthorized
//it will redirect to the same document, so authentication will take place and will go back to login
window.location.href = document.URL;
}
}
});
但是它在全局范围内捕获所有内容,而我只需要它捕获 401 并让定义的错误函数完成其余的工作。
我的意思是,比如我有:
function dropYear_changed(data) {
$.ajax({
url: '@Url.Action("aaa", "vvv")',
type: "get",
contentType: 'application/x-www-form-urlencoded',
data: data,
success: function (result) {
//Do stuff
},
error: function(error) {
//show some alert, toast, do error stuff
}
});
}
全局 ajax 它不会做
//show some alert, toast, do error stuff
因为 ajax安装程序将接管。 我想在全球范围内捕获 401,但如果错误不是 401,则执行其他操作,并且在 ajax 错误中定义了其他内容:
我该怎么做?
您只能在 $.ajaxSetup 中使用 statusCode 函数捕获特定错误。试试下面的代码:
$.ajaxSetup({
statusCode: {
401: function() {
alert("401");
}
}
});
当响应状态为 401 时,此函数会发出警报。这样您就可以全局捕获 401,如果错误不是 401,则执行其他操作。