XML データを wordpress サイトにインポートする jquery 関数を作成しようとしています。プロセス中に、投稿を個別にインポートし、インポートが完了するたびに進行状況バーやカウンターを更新したいと考えています。
私が抱えている問題は、プロセス全体が完了するまで進行状況の更新がすべて保留され、その後すべてが同時に更新されるように見えることです。
たとえば、ページを 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 ループが完了するまで表示されません。一挙登場!