目前,我正在使用 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);
}