有没有办法为单个ajax调用禁用beforeSend事件?

时间:2012-03-21 20:38:25

标签: javascript ajax jquery

我有一个像这样的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,但我更喜欢更通用的解决方案。有谁知道怎么解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

这听起来与my own question about disabling certain ajax event handlers非常相似,如果不相同的话。 This answer可能对您有用。