1
对于jQuery的$.ajax
电话:
我想有一个全局错误处理程序,这样的事情:
$(document).ajaxError(function (e, jqxhr, settings, exception) {
window.location = '/Error/ServerError';
});
但是...我只有当$.ajax
调用中的error
方法未定义时,才希望该方法运行。我看他们是否没有明确定义,他们是匿名方法,但我不知道如何检查一个方法是匿名还是命名。
所以,对于这样的事情,我不希望被称为全球处理程序:
$.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
}
});
工作示例它在jsFiddle中工作,但由于某种原因,它不适用于我的项目。无论是定义的还是匿名的,settings.error都是真的。 – Martin 2012-07-10 14:05:39
您使用哪种浏览器/ jQuery版本?在jQuery> = 1.5的Firefox/Chrome/Safari/IE6中,'settings.error'不是匿名的,而是'undefined',所以上述方法可行(我无法在Opera或jQuery中使用该示例<= 1.4)。当你console.log(设置)'它是否**总是**在你的项目中定义了错误?你是否按照你在问题中描述的方式调用'$ .ajax'? (即有没有其他的代码在没有的时候注入错误参数?) – mgibsonbr 2012-07-10 21:17:00