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

时间:2010-06-25 20:36:15

标签: jquery ajax

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

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

我的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();
    }
});

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

我尝试从我的ajax错误函数中调用event.stopImmediatePropagation(),希望它会阻止进一步的事件触发(即:默认错误事件)但除了在firefox中告诉我“事件”是什么之外什么也没做未定义。

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

谢谢, 马特

1 个答案:

答案 0 :(得分:9)

global option上的$.ajax()用于确定是否执行global AJAX event handlers,只需将其设置为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!");
    }
});