現在、setIntervalを使用して、PHPページを呼び出すいくつかのAJAX関数を実行しています-
var intervalOne = setInterval(ajaxfunction, 1500);
これは、応答時間が短いテスト サーバーでは問題なく動作します。ただし、私のライブサーバーでは、少しラグがあり、最初の呼び出しが完了する前に間隔時間が再び来て、同じ呼び出しが繰り返され、重複データが表示されることがあります。
同じ間隔時間を維持する方法はありますが、最初の関数がまだ終了していない場合は関数を呼び出すのを待つ必要がありますか?
あるいは、AJAX 呼び出しの readystate 部分に、呼び出しが完了したら再びトリガーするようにできるものはありますか?
編集 - 私の ajax 呼び出しの例:
function Send() {
var name = document.getElementById('name').value;
var message = document.getElementById('message').value;
var xmlhttp = getXMLHttp();
xmlhttp.onreadystatechange = function() {
if(xmlhttp.readyState == 4)
{
document.getElementById('message').value = "";
if(xmlhttp.responseText != "") {
var chat = document.getElementById('messagebox');
chat.innerHTML = chat.innerHTML + '<div class=\"alert\">' + xmlhttp.responseText + '</div>';
chat.scrollTop = 1000000000;
}
}
}
xmlhttp.open("POST","submit_message.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("name=" + name + "&message=" + message);
}