2

对于 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
    }
});
4

1 回答 1

5

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

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

jsFiddle的工作示例

于 2012-07-10T13:33:23.490 回答