jQuery Ajax已完成,但未完成此功能
我有以下代码:jQuery Ajax已完成,但未完成此功能,jquery,Jquery,我有以下代码: $(document).ajaxComplete(function () { tips(); }); 当ajax事件完成时,它将再次运行tips函数!然而,tips函数也包含ajax请求,所以它会调用自己,这不是我想要做的 当ajax事件完成时,我如何运行tips,除非是tips ajax请求编辑 不要使用我的解决方案。使用下面mmcnickle中的一个。 在您的tips()中功能您可以设置bool标志吗?类似于 var isTips = false; functi
$(document).ajaxComplete(function () {
tips();
});
当ajax事件完成时,它将再次运行tips函数!然而,tips函数也包含ajax请求,所以它会调用自己,这不是我想要做的
当ajax事件完成时,我如何运行tips,除非是tips ajax请求编辑
不要使用我的解决方案。使用下面mmcnickle中的一个。
在您的
tips()中代码>功能您可以设置bool标志吗?类似于
var isTips = false;
function tips(callBack){
isTips = true;
// rest of your code
if(typeOf(callBack) == 'function'){
callBack();
}
}
$(document).ajaxComplete(function(){
if(!isTips){
tips(function(){
isTips = false;
});
}
});
可以设置ajaxComplete()
的回调函数来接收有关ajax请求的详细信息。然后,您可以在进行ajax调用时传入一个特殊设置,该设置允许您判断何时应该调用或不应该调用tips函数:
function tips() {
var settings = {
is_tips_call: true
};
$.ajax('#', settings);
alert("In tips");
}
$(document).ajaxComplete(function(event, xhr, settings) {
if ('is_tips_call' in settings && settings.is_tips_call == true) {
// Do nothing
return;
}
tips();
});
我已经为这个做了一个准备,这样你就可以看到它的实际效果。这比公认的答案更可取,详情请参见我的评论。或者只是将提示创建为一个函数。提示是一个函数,你的意思是什么?此解决方案可能会导致一些非常奇怪的行为,并可能是一些难以跟踪的错误的来源。a) isTips
标志永远不会再次设置为false
,因此在第一次调用tips()
之后,您的ajaxComplete()
回调将不再适用于任何其他ajax调用,无论它们是否由tips()
调用。b) 在设置isTips
标志和再次将其设置为false之间完成的Ajax请求将无法触发回调。请参阅我的答案,以获得一个解决方案,该解决方案允许检查每个请求是否调用tips()
。我原以为他能够自己解决这个问题。使用我的解决方案,您可以在调用tips()后将isTips设置回false代码>在ajaxComplete
功能中。否,需要检查每个请求,以确保所有非tips调用都被实际捕获。因为这些是异步调用,所以您不能确定在设置isTips=true
和isTips=false
之间不会有回调。如果在这段时间内有任何回调被解雇,你就错过了。该死的,你是对的-这是一个优雅的解决方案。我讨厌犯错,但我要承认我错了:)