19

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

4

5 回答 5

28

您可以使用全局 ajax 事件处理程序.ajaxError()

$( document ).ajaxError(function( event, jqxhr, settings, exception ) {
    if ( jqxhr.status== 401 ) {
        $( "div.log" ).text( "Triggered ajaxError handler." );
    }
});
于 2013-08-01T09:22:21.280 回答
13

你可以这样做:

$(function() {
    $.ajaxSetup({
        error: function(jqXHR, exception) {
            if (jqXHR.status === 401) {
                alert('HTTP Error 401 Unauthorized.');
            } else {
                alert('Uncaught Error.\n' + jqXHR.responseText);
            }
        }
    });
});

ajax这将在您的任何调用中捕获错误。

于 2013-08-01T09:22:36.977 回答
2

$.ajaxSetup()函数将允许您为 Ajax 调用指定全局选项。但是要小心,因为其他调用ajaxSetup()将覆盖全局选项,并且该ajax()方法的指定本地选项将覆盖全局设置。

文档

于 2013-08-01T09:23:01.697 回答
1

尝试使用.ajaxError()作为全局方法http://api.jquery.com/ajaxError/

于 2013-08-01T09:22:49.507 回答
1

要捕获401状态代码,只需添加

  $.ajaxSetup({
    statusCode: {
      401: function(err){
        console.log('Login Failed.', err.responseJSON);
        // or whatever...
      }
    }
  });

在触发 AJAX 调用之前的某个位置到您的页面。

于 2014-05-05T10:22:55.960 回答