【发布时间】:2018-11-16 11:49:36
【问题描述】:
我正在编写一个函数来使用 ajax 在页面加载时从后端服务器获取指令。我的 ajax 代码根据数字获取指令,并使用 jquery 和控制台在此 <p id="loadText"></p> 元素中使用变量 response.setText 打印指令。这是我的ajax函数:
function ajaxFetch(s) {
var success = false;
$.ajax({
type: "POST",
url: "post.php",
data: {
step: s
},
async: false,
dataType: 'JSON',
success: function (response) {
$("#loadText").text(response.stepText);
console.log(response.stepText);
success = true;
}
});
return success;
}
无论有多少步骤,我都在尝试使用另一个函数来循环遍历步骤,但这是我一直遇到的问题:
-
ajaxFetch()直到最后一次执行才更新 DOM - 尝试了
setTimeout()并且没有更新 DOM - for 循环循环通过
ajaxFetch()太快了 -
response.stepText准时在控制台打印,但不准时更新 DOM
这是我尝试过的示例循环:
function uploadSteps(maxStep) {
for (var x = 1; x <= maxStep; x++){
setTimeout(ajaxFetch(x), 20);
}
}
抱歉,拖了这么久,提前谢谢。
【问题讨论】:
-
我觉得是因为你使用了同步调用
标签: javascript jquery html ajax dom