JQuery捕获任何ajax错误

时间:2013-08-01 09:19:49

标签: javascript jquery ajax

我想捕获任何ajax 401 Unauthorised异常,但不喜欢更改我的所有ajax查询。有没有办法为任何$ .ajax调用更改它(覆盖任何error处理程序)?

5 个答案:

答案 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()方法的指定本地选项将覆盖全局设置。

Documentation

答案 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调用被触发之前,

到你的页面。