$ .ajax - 未定义错误函数时的全局错误处理

时间:2012-07-10 13:22:46

标签: ajax jquery

对于jQuery $.ajax调用:

我想要一个全局错误处理程序,如下所示:

    $(document).ajaxError(function (e, jqxhr, settings, exception) {
        window.location = '/Error/ServerError';
    });

但是......我只希望在未定义error次调用的$.ajax方法时运行此项。我看是否它们没有明确定义,它们是匿名方法,但我不知道如何检查方法是匿名还是命名。

所以,对于这样的事情,我不希望调用全局处理程序:

$.ajax({
    url: "url",
    type: "POST",
    success: function(data) {
        //do something
    },
    error: function(jqXHR, textStatus, errorThrown) {
        ShowError("Error", errorThrown);
    }
});

但是对于这个调用,我希望调用全局处理程序,并重定向页面:

$.ajax({
    url: "url",
    type: "POST",
    success: function(data) {
        //do something
    }
});

1 个答案:

答案 0 :(得分:4)

您可以检查全局处理程序中的settings参数是否定义了error字段:

$(document).ajaxError(function (e, jqxhr, settings, exception) {
    if ( settings.error )
        return;
    window.location = '/Error/ServerError';
});

jsFiddle

的工作示例