ajaxを使用してldapサーバーにクエリを実行し、複数のユーザー情報を取得してmysql dbに入力するjs関数を実行しています。これは、毎回異なるパラメーターを使用して LDAP 要求をループすることによって行われます。
LDAP サーバーの応答が遅いため、進行状況バーに追加しています。クエリが完了するたびに、進行状況バーの更新がトリガーされます。問題は、ループが開始される前に css の更新が行われたとしても、関数全体が完了した後にプログレス バーが 1 回しか更新されないことです。
function findUsers() {
//set Number of users
var noOfUsers = 10;
var progress = 1;
//progress bar div appears as soon as function begins
//this element change doesn't happen till the function has finsihed
document.getElementById('progress_bar').style.visibility = 'visible';
//loop through users
for( counter = 0; counter <= noOfUsers; counter++)
{
//update element with progress
document.getElementById('progress_bar').innerHTML = progress + " of " + noOfUsers;
//start AJAX
xhrPostUserIDToLDAP =new XMLHttpRequest();
xhrPostUserIDToLDAP.onreadystatechange=function()
{
if (xhrPostUserIDToLDAP.readyState==4 && xhrPostUserIDToLDAP.status==200)
{
//updates progress var so on next loop, the element is updated
progress++;
}
}
xhrPostEmployees.open("POST","ajax/ldap.php",false);
xhrPostEmployees.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xhrPostEmployees.send("userID="+userID);
}
//loop has finsihed, update element with complete notification
document.getElementById('progress_bar').innerHTML = "Completed"; }
要素が更新される唯一のものは Completed ですが、これは関数が完了すると 20 秒後に発生します。ループが循環するときに要素を更新するにはどうすればよいですか?
ありがとう