我需要连续发起同步ajax调用。
每次通话后,我都要更新 DOM元素。
现在问题就出现了,只有在所有调用完成后才会更新元素。
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "analysis.py?id="+id, false);
xmlhttp.send();
document.getElementById("res").innerHTML = "Done id "+id;
id+=10;
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "analysis.py?id="+id, false);
xmlhttp.send();
document.getElementById("res").innerHTML = document.getElementById("res").innerHTML+"Done id "+id;
元素dom一次显示:Done id 1Done id 11
而不是一个接一个地预期,即元素在两次调用结束时直接更新。
编辑1: 嗨,大家好, 刚刚发现我的代码的另一个问题。以下代码仅运行第一个ajax,之后ajax调用似乎在运行,但是这些调用没有在analyze.py中定义的工作。
var total = %d;
function filldatabase(){
var id = 1;
callajax(id);
}
function callajax(id){
$.ajax({
url: "analysis.py?id="+id,
context: document.body
}).done(function() {
$("#progress").html(Math.floor(((id/(total-5))*100))+"%%");
$("#pbar").css("width", ((id/(total-5))*100) + "%%");
if(id<=1296){
callajax(id+10);
}
else{
$("#res").html("Completed. Redirecting in 5 seconds...<meta http-equiv='refresh' content='5;URL=get_comment.py'>");
}
});
}
答案 0 :(得分:-1)
通过在前一个回调中调用下一个ajax来解决这个问题。