使用.ajaxError并在$ .ajax()中设置错误函数

Mat*_*att 11 ajax jquery

我正在重写我所有的ajax调用以使用jquery方法(更清晰的代码!)并声明了一个默认的ajaxError函数,如下所示:

$(document).ajaxError(function(event, request, settings){
  alert("there was some error.. boo");
});
Run Code Online (Sandbox Code Playgroud)

我的ajax调用具有自己定义的错误函数,我不希望上面的默认值为:

$.ajax({ url: url,
    success: function(data){
        // do something
    },
    error: function (r, textStatus, errorThrown) { 
        // let's do something here regarding the error
        alert("Oh no! Something went terribly wrong in here!");
        // just trying this to see if it will stop any other events (ie default ajaxError)
        event.stopImmediatePropagation();
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,现在我有几个ajax调用,我想在ajax调用中声明一个错误函数.我希望通过在ajax调用中声明一个错误函数,它将替换我定义的默认错误调用.但这似乎并非如此,因为我继续首先得到我的ajax函数错误调用,然后我也看到上面的代码执行.

我尝试从我的ajax错误函数中调用event.stopImmediatePropagation()希望它会阻止进一步的事件触发(即:默认错误事件)但除了告诉我在firefox中"事件"未定义之外没有做任何事情.

有任何想法吗?我希望我不必经历并为每个ajax调用定义一个错误函数.如果归结为那,我会的.刚想我会问.

谢谢,马特

Nic*_*ver 9

有一个global选项,$.ajax()此决定是否要执行这些全局AJAX事件处理程序,只需将其设置为false,如下所示:

$.ajax({ 
    url: url,
    global: false,
    success: function(data){
        // do something
    },
    error: function (r, textStatus, errorThrown) { 
        alert("Oh no! Something went terribly wrong in here!");
    }
});
Run Code Online (Sandbox Code Playgroud)

  • 如果我只想覆盖错误功能怎么办?我想保留可能设置的任何其他全局函数(例如ajaxSend,ajaxComplete)? (2认同)
  • @John - 只要不要覆盖你想要覆盖的函数,就会使用全局变量:) (2认同)