在等待第一个完成时运行ajax调用

时间:2016-01-16 10:37:30

标签: javascript jquery ajax

我有一个ajax调用需要很长时间才能完成(分钟)。在执行期间,将显示一个微调器(使用AjaxStart和AjaxStop触发)。

我想要做的是在ajax调用中添加一个进度计数器(类似“到目前为止处理的1000个X记录”,其中X更新,第二个ajax调用)。第二个ajax调用将每隔10秒运行一次setInterval。我的问题是:第一个ajax调用完成后如何停止setInterval? 这是第一个ajax调用:

function ajax_submit(){
    var submit_val=$("#stato").serialize();
    dest="plan/new_bp1.php";
    $.ajax({
        type: "POST",
        url: dest,
        data: submit_val,
        success: function(data){ 
            data1=data.split("|");
            if(data1[0]=="Successo"){ 
                $("#spnmsg").fadeTo(200,0.1,
                    function(){$(this).removeClass().addClass("spn_success").html(data1[1]).fadeTo(900,1)});
                }else if(data1[0]=="Errore"){
                    $("#spnmsg").fadeTo(200,0.1,
                    function(){$(this).removeClass().addClass("spn_error").html(data1[1]).fadeTo(900,1)});  
                }
        },
        complete: function(){
            setTimeout(function(){ $('.container').load('plan/home.php');},2000); 
        }
    });
    setTimeout(function(){counterUpdater();},2000);
}

最后我只调用counterUpdater()(等待几秒钟,同时处理所有要处理的记录的计数器)。

function counterUpdater(){
    setInterval(ajax_counter_upload(),10000);   
}

function ajax_counter_upload(){
    //all the stuffs to get the updated count of processed records
}

当ajax_submit已经完成时,如何阻止counter_updater()每十秒运行一次?我有什么需要成功或完成的功能?

编辑:我知道如何调用clearInterval但在这种特定情况下,intervalID仅在counterUpdater范围内。那么如何将其移回ajax_submit?

0 个答案:

没有答案