第二次ajax调用需要很长时间才能完成

时间:2016-02-04 12:21:39

标签: jquery ajax

编辑:我已经检查过我的ajax调用设置为运行异步。代码将每10秒触发一次ajax_counter_upload,但所有请求都将进行,直到第一个请求完成,并将报告所有呼叫的100%进度。

我有一个需要几分钟才能完成的ajax调用。所以我创建了第二个,它将为用户提供第一次呼叫进度的状态更新。 它过去工作正常,但现在我看到第二个呼叫将比第一个呼叫更活跃,因此只有在第一个呼叫完成后才会提供反馈。没有任何改变:没有更新,任何软件都没有版本更改等等 我的代码如下:

var intervalID;

function counterUpdater(){
    intervalID = setInterval(ajax_counter_upload,10000);    
}
function ajax_counter_upload(){
    $.ajax({
        type: "POST",
        url: "plan/counter.php",
        data: {tipo:'BP'},
        success: function(data){
            $("#spinner_msg").fadeTo(200,0.1,
                function(){
                    $(this).html(data);
                    $(this).fadeTo(900,1);
                });
        }
    });
}
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(){
            clearInterval(intervalID);
            $('#spinner_msg').html('');         
            setTimeout(function(){ $('.container').load('plan/home.php');},2000); 
        }
    });
    $('#spinner_msg').html('Avvio la creazione del nuovo business plan');
    setTimeout(function(){counterUpdater();},2000);
}

所以每两秒counterUpdater就会为用户提供反馈。 注意:counterUpdater调用将成功,但只需要太多时间才能完成

2 个答案:

答案 0 :(得分:0)

我可能错了,但似乎ajax_counter_upload在12秒后得到了它的初始调用。

你致电counterUpdater();两秒后,然后每10秒钟启动ajax_counter_upload。 尝试将setInterval的10000(ms)减少到较低的数字。

答案 1 :(得分:0)

clearInterval(intervalID);需要放在success函数的ajax_counter_upload()内而不是ajax_submit()