1

我在 ajax 设置中定义了一个错误回调,它将在每个 ajax 实例中执行:

$.ajaxSetup({

    cache: false,
    error: function (data, textStatus, pStatusDescription) {

        if (pStatusDescription === "Unauthorized")
        {
            // show dialog
            alert("Your Login has expired. Please re-login.");
            return;
        }
    }
});

我还有一个简单的 ajax 请求,它有自己的错误处理定义。此定义覆盖 中的定义$.ajaxSetup

$.ajax({
    url: "http://hostname",
    success: function(xhr) { ... },
    error: function(data, textStatus, pStatusDescription) { 

        if(pStatusDescription === "ObjectNotFound")
        {
            // remove Object
            return;
        }

        // call 'error' callback in $.ajaxSetup now.
    }
});

如何将错误从$.ajax实例冒泡到$.ajaxSetup

4

1 回答 1

0

我认为问题是:您使用 ajaxSetup 的方式错误。检查ajaxSetup 文档中的注释:

注意:全局回调函数应该使用它们各自的全局 Ajax 事件处理方法来设置——.ajaxStart()、.ajaxStop()、.ajaxComplete()、.ajaxError()、.ajaxSuccess()、.ajaxSend()——而不是在内部$.ajaxSetup() 的选项对象。

因此,如果您使用 ajaxError而不是 ajaxSetup,您可以在全局处理程序的 ajaxError 处理程序中捕获错误,并在 $.ajax 的“错误”参数中为特定请求添加额外的处理程序

于 2016-10-07T13:33:16.700 回答