【发布时间】:2011-12-18 06:27:36
【问题描述】:
我正在遍历一个数组,并且在循环的每次迭代中,我都通过 ajax 调用一个 url。我还想更新一个 .innerHTML 以便它显示以使用户了解正在处理循环的哪个迭代。但是,.innerHTML 仅在脚本完成时显示更新。
如何在循环期间显示此通知?
我也在使用查询 ajax 设置“async: false”。我不想一次处理所有的 ajax 请求,因为它们正在编码 CPU 密集型的视频文件。我也不想锁定浏览器等待同步请求完成。
有没有更好的方法来做到这一点?
我的最终目标是为每组视频按顺序执行 combine.php 脚本,同时向用户显示当前状态指示器,同时在此过程中不锁定浏览器。感谢您的帮助!
代码 sn-p 在这里:
// process the loop of videos to be combined
var status = document.getElementById('currentStatus');
for (i=0; i< count; i++) {
// change the display
var fields = videos[i].split(":", 2);
current = i +1;
currentStatus.innerHTML = "<b>Multi-part Videos:</b> <h3 class='status'>Currently Updating Bout #" + fields[1] + " (" + current + " of " + count + " videos)</h3>";
// run the combine
var dataString = 'videoId='+ fields[0];
$.ajax({
type: "POST",
url: "combine.php",
data: dataString,
success: function(txt) {
//deselect the checkbox
document.combine.video[selected[i]].checked = false;
},
async: false
});
【问题讨论】:
-
count 和 currentStatus 是在哪里定义的?我想你想要 status.innerHTML 或 $('#currentStatus').html(..) 如果你使用 jquery
-
currentStatus 应该是状态,就像第一行一样。它的工作原理与 currentStatus 相同。 count 在上面定义,然后是复选框数组的长度。因为我只想循环选择的项目。
标签: javascript ajax loops innerhtml