jQuery,将ajaxQueue出列

jQuery,将ajaxQueue出列,jquery,ajax,Jquery,Ajax,我正在使用示例中提到的ajaxQueue: 我还有一个函数来进行Ajax调用并将结果附加到div(简化): 函数ajaxCall(){ $.ajaxQueue({ 类型:“POST”, url:myURL, async:true, cache:false, 成功:功能(结果){ $('#divID').append($('').html($(result.html()).fadeIn(200)); } }); } 然后在单击事件时,我循环ajax调用(简化): $(“#btn”)。在(“单击”

我正在使用示例中提到的ajaxQueue:

我还有一个函数来进行Ajax调用并将结果附加到div(简化):

函数ajaxCall(){
$.ajaxQueue({
类型:“POST”,
url:myURL,
async:true,
cache:false,
成功:功能(结果){
$('#divID').append($('').html($(result.html()).fadeIn(200));
}
});
}
然后在单击事件时,我循环ajax调用(简化):

$(“#btn”)。在(“单击”,函数(){
//(???)退出ajaxQueue
$('#divID').html('');//清除当前结果
对于(var i=0;i使用:

编辑

问题是仍然可能有一个ajax请求被调用

因此,您可能希望跟踪当前请求:

currentRequest = $.ajax( ajaxOpts );
并在清除队列时中止此操作:

if (currentRequest) {
    currentRequest.abort();
}
请参见您需要的

   ajaxQueue.queue("fx", []); // fx is defualt queue Name. 
请参见

 success: function( result ) {
            if(num!=0){
                $('#divID').append($('<div/>').html('Result '+num).fadeIn(300));
            }
            num++;
        }

$("#btn").on("click", function(e) {
    e.preventDefault();
    if(ajaxQueue.queue().length>0){
        num = 0;
        ajaxQueue.queue("fx", []);
    }else{
        num = 1;
    }
    $('#divID').html(''); // Clear current results



    for(var i=0; i<40; i++) {
        ajaxCall();
    }

});
成功:函数(结果){
如果(num!=0){
$('#divID').append($('').html('Result'+num.fadeIn(300));
}
num++;
}
$(“#btn”)。在(“单击”,功能(e){
e、 预防默认值();
如果(ajaxQueue.queue().length>0){
num=0;
ajaxQueue.queue(“fx”,[]);
}否则{
num=1;
}
$('#divID').html('');//清除当前结果

对于(var i=0;iSo)当用户第二次单击链接时,第一次单击已检索到的结果会发生什么情况?@rahulmaindargi我只希望清除(删除)结果。谢谢。我已经试过了,但仍然有一些以前的结果。在我提供的JSFIDLE示例中,如果您添加此代码,然后快速单击链接三次,结果将上升到42,而不是40。您可以尝试一下并让我知道吗?非常感谢!确实有效!我认为jQuery文档应该提到这一点…我这只是jQuery文档中的一个小代码示例。这个示例也没有返回承诺,因此您不能执行类似于
$.ajaxQueue({…}).done(function(response){…});
的操作。如果您想要更完整的实现,请看一看,谢谢您……我使用
ajaxQueue.clearQueue()
。如果您快速单击链接3次,结果将上升到42。(每次额外的单击都会留下一个以前的结果)。您是否认为使用
$('#divID').html('')清除以前的内容有问题
?嗯…num
只是一个虚拟值,用于演示我的问题。结果实际上是真实内容。sroes解决方案工作正常。再次感谢您。。。
currentRequest = $.ajax( ajaxOpts );
if (currentRequest) {
    currentRequest.abort();
}
   ajaxQueue.queue("fx", []); // fx is defualt queue Name. 
 success: function( result ) {
            if(num!=0){
                $('#divID').append($('<div/>').html('Result '+num).fadeIn(300));
            }
            num++;
        }

$("#btn").on("click", function(e) {
    e.preventDefault();
    if(ajaxQueue.queue().length>0){
        num = 0;
        ajaxQueue.queue("fx", []);
    }else{
        num = 1;
    }
    $('#divID').html(''); // Clear current results



    for(var i=0; i<40; i++) {
        ajaxCall();
    }

});