我想捕获任何ajax 401 Unauthorised
异常,但不喜欢更改我的所有ajax查询。有没有办法为任何$ .ajax调用更改它(覆盖任何error
处理程序)?
答案 0 :(得分:24)
您可以使用全局ajax事件处理程序.ajaxError()
$( document ).ajaxError(function( event, jqxhr, settings, exception ) {
if ( jqxhr.status== 401 ) {
$( "div.log" ).text( "Triggered ajaxError handler." );
}
});
答案 1 :(得分:12)
您可以这样做:
$(function() {
$.ajaxSetup({
error: function(jqXHR, exception) {
if (jqXHR.status === 401) {
alert('HTTP Error 401 Unauthorized.');
} else {
alert('Uncaught Error.\n' + jqXHR.responseText);
}
}
});
});
这会在您的ajax
来电中发现错误。
答案 2 :(得分:2)
$.ajaxSetup()
函数将允许您为Ajax调用指定全局选项。但要小心,因为对ajaxSetup()
的其他调用将覆盖全局选项,ajax()
方法的指定本地选项将覆盖全局设置。
答案 3 :(得分:1)
尝试将.ajaxError()
用作全局方法http://api.jquery.com/ajaxError/
答案 4 :(得分:1)
要抓住401
状态代码,只需添加
$.ajaxSetup({
statusCode: {
401: function(err){
console.log('Login Failed.', err.responseJSON);
// or whatever...
}
}
});
在AJAX调用被触发之前,到你的页面。