2012-10-05 197 views
0

我有一些AJAX代碼,我想繼續每1秒。我將其添加到我的HTML頁面中,看它是否會自行更新,但我必須刷新以查看更改。Ajax無限循環

 while (1) { 
      getTime(); 
     } 

這沒有起作用,以保持更新,它從來沒有更新我的文本。什麼是讓Ajax反覆做某事的方法?

這裏的getTime():

 function getTime() { 
      if (str=="") { 
       document.getElementById("txtHint").innerHTML=""; 
       return; 
      } 

      if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari 
       xmlhttp=new XMLHttpRequest(); 
      } else {// code for IE6, IE5 
       xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 

      xmlhttp.onreadystatechange=function() { 
       if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
        document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
       } 
      } 

      xmlhttp.open("GET","auction.php?getTime=1",true); 
      xmlhttp.send(); 

      setTimeout(getTime, 1000); 
     } 

謝謝!

+0

你能提供'getTime'的來源嗎? –

回答

1

重複的任務通常使用的JavaScript setInterval做:

window.setInterval 調用一個函數或重複執行一段代碼,每次調用該函數之間的固定時間延遲。

在你的榜樣,那將是

setInterval(getTime, 1000); 
+0

它不是自己更新我仍然需要刷新。 – Alec

0

setInterval()可能是你最好的選擇 - 或者,setTimeout反覆對AJAX成功復位本身。

0
setInterval(getTime, 1000); // Run getTime() every second 
setInterval(getTime, 200); // Run getTime() every 200 milliseconds 
+0

它不是自己更新我仍然需要刷新。 – Alec

0

您的代碼是一個無限循環,並且會從瀏覽器可以很快處理的js中打開連接的數量限制。

使用window.setInterval做這樣的事情。

window.setInterval(getTime, 1000); 
+0

它不是自己更新我仍然需要刷新。 – Alec

+0

@Alec是的,不應該在你的ajax回調函數中進行刷新工作? – xdazz

+0

我是AJAX新手,你能解釋一下你在說什麼嗎? – Alec

0
function getTime(){ 
    setTimeout(getTime, [interval]); 
} 

這應該這樣做。

+0

不應該是window.setTimeout()嗎? – Alec

+0

即使沒有'window',它也能正常工作[Samples](http://www.electrictoolbox.com/using-settimeout-javascript/) –

+0

我剛剛添加了我的getTime()方法。我把它放進去了,它本身並沒有這樣做。 – Alec