我正在尝试创建一个 jquery 函数,它将 XML 数据导入到 wordpress 站点。在此过程中,我希望它单独导入帖子,然后在每次导入完成时更新进度条和/或计数器。
我遇到的问题是进度更新似乎都被推迟了,直到整个过程完成,然后同时更新。
例如:不是用 1/100 完成,然后 2/100 完成来更新页面,而是等待到最后,然后同时添加所有 100 个更新。
希望我的代码能比我更好地解释它:S
// Send inital data to check XML feed
$.ajax({
url: ajaxurl,
type: 'POST',
data: ajaxdata
}).done( function(response) {
...
// Process XML data
$('#progress').html('<h3>Import Progress</h3><p id="import_status"></p>');
data2 = $("#form_name").serialize();
finished = false;
count = 0;
while (!finished) {
var ajax = $.ajax({
url: ajaxurl,
data: data2,
type: 'POST',
async: false
}).done(
function(response2) {
if (response2 == 0) {
finished = true;
} else {
count++;
split = response2.toString().split("::");
$('#progress').append('<p><strong>Item'+count+'/'+split[0]+'</strong><br/><strong>Status:</strong> '+split[1]+'</p>');
if (count >= split[0]) {
finished = true;
}
}
}
);
} // while
$('#progress').append('<p>Import Complete!</p>');
...
}
ajaxurl 的 php 文件在正确的位置返回它应该返回的内容。对于上下文,在 while 循环期间,php 文件返回如下字符串:
100::Some Status Information
其中 100 是将返回的总行数。
循环运行正确的次数并在完成时输出所有正确的信息......但它不会逐项输出......它同时输出所有信息。
我错过了什么?我怎样才能让它分别输出每个项目的状态报告?
谢谢你的尽心帮助。
编辑:只是一些额外的信息,<h3>ImportProgress</h3>
直到while循环完成后才会出现!全部出现一次!