我有一个像这样的ajax加载器:
$('#loadingDiv')
.hide() // hide it initially
.ajaxStart(function() {
if(showSpinner == true){
$(this).show();
}
else{
showSpinner = true;
}
})
.ajaxStop(function() {
$(this).hide();
})
;
来自:How to show loading spinner in jQuery?
更新后编辑
我初始化showSpinner = true,并在我重复的ajax调用之前立即将其设置为false。它大部分时间都有效,但有时候旋转器不应该出现在它应该的时候。我已经调查了showSpinner的值,看起来它在设置和设置回true之间的时间过长都是假的。
它工作得非常好,但我也有一个每15秒执行一次的循环ajax调用,我不希望ajax加载器出现在那个。我试过这个:
showSpinner = false;
// make ajax call to the database to check for new photos
$.ajax('/url', {
type:"post",
data: data,
success: function(response){
}
});
它将阻止微调器出现,但有时它也会禁用其他ajax调用的微调器(其他时候它工作正常)。我已经尝试将微调器的重新启动移动到beforeSend但它没有帮助。当删除执行上述代码的setInterval调用时,它可以解决问题。
我的另一个选择是在每个地方都包含微调器调用ajax,但我更喜欢更通用的解决方案。有谁知道怎么解决这个问题?
感谢。
答案 0 :(得分:1)
这听起来与my own question about disabling certain ajax event handlers非常相似,如果不相同的话。 This answer可能对您有用。