我正试图解决与关闭相关的问题。
我使用$(document).ajaxError
为jquery设置了一个全局错误处理程序,简化版本为:
$(document).ajaxError(
function(event, xhr, settings, exceptionthrown)
{
LogError(settings.url, function() { $.ajax(settings); });
}
);
LogError
是一个记录错误的函数,允许用户重试请求(它调用上例中通过第二个参数传入的函数)。
当只有一个错误时,一切都很好,但是当存在多个错误时,设置始终指向单个对象。我明白这可能是因为:
a)所有对象都通过引用传递 b)我的回调函数是从ajaxerror参数中获取设置,同一个对象可能会被重用用于将来的错误吗?
任何人都可以确认发生了什么,以及我将如何修复它?
谢谢!
答案 0 :(得分:1)
这是正确的:
$.ajax({
url: '/some_url',
success: function(){}
});
$.ajax({
url: '/some_other_url',
success: function(){}
});
$(document).ajaxError(
function(event, xhr, settings, exceptionthrown)
{
alert(settings.url);
}
);
输出:/some_url
和/some_other_url
ps:在警告后添加$.ajax(settings);
,它会使用交错/some_url
和/some_other_url
创建无限递归。哪个吃资源...如果你有第二个参数的延迟调用,那么尝试将其写为
$(document).ajaxError(
function(event, xhr, settings, exceptionthrown)
{
var sett = settings;
LogError(settings.url, function() { $.ajax(sett); });
}
);