目前,我使用的setInterval运行调用PHP页面,像这样几个AJAX功能 -替代的setInterval是等待函数来完成
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);
}
只需在函数结尾调用setTimeout? –
显示您的AJAX呼叫,以便我们提供更好的答案。 –
@James我真的可以自己调用一个函数吗? – Morgan