目前,我使用的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