具有闪烁的setInterval的Ajax请求

时间:2015-02-21 23:21:25

标签: javascript ajax

我有这段代码,目的是获取文件的内容并将其放在div中。

<script type="text/javascript">
   setInterval("loadXMLDoc()",2000);
   function loadXMLDoc(){
        var xmlhttp;
       // code for IE7+, Firefox, Chrome, Opera, Safari
       xmlhttp=new XMLHttpRequest();
       xmlhttp.onreadystatechange=function(){
           document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
       }
      xmlhttp.open("GET","ajax_doc.txt",true);
      xmlhttp.send();
   }
 </script>

但在Chrome,Opera和Safari中,div中的文字每2秒闪烁一次。在Firefox中,这不会发生。我该怎么做才能避免眨眼?代码在使用Appache的本地计算机上运行。感谢

1 个答案:

答案 0 :(得分:1)

您应该尝试在onreadystatechange处理程序中添加if语句,以检查请求是否已完成,因为它可能存在其他就绪状态。您还应该检查状态是否正常(200)而不是找不到页面(404)

if (xmlhttp.readyState==4 && xmlhttp.status==200)

setInterval函数继续以指定的间隔调用函数,直到调用clearInterval方法。 setTimeout函数只调用一次函数,这将停止刷新页面。