编辑:我已经检查过我的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调用将成功,但只需要太多时间才能完成
答案 0 :(得分:0)
我可能错了,但似乎ajax_counter_upload
在12秒后得到了它的初始调用。
你致电counterUpdater()
;两秒后,然后每10秒钟启动ajax_counter_upload
。
尝试将setInterval
的10000(ms)减少到较低的数字。
答案 1 :(得分:0)
clearInterval(intervalID);
需要放在success
函数的ajax_counter_upload()
内而不是ajax_submit()