2012-10-05 155 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