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

Mar*_*tin 2 ajax jquery

对于 jQuery$.ajax调用:

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

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

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

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

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

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

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

mgi*_*nbr 5

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

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

jsFiddle 的工作示例