var xmlHttp = null;
function Getxmlhttp()
{
var url = "update.php"; if (xmlHttp == null)
{
xmlHttp=GetXmlHttpObject();
   if (xmlHttp==null)
     {
     alert ("您的浏览器不支持AJAX!请升级浏览器版本!");
     return;
     } }
//alert("Object Build Ok");
    xmlHttp.onreadystatechange = xmlstatechange;   
    xmlHttp.open("GET",url,true);   
    xmlHttp.send();  

   window.setTimeout("Getxmlhttp()",5000); 
}我在Getxmlhttp中设置了定时5秒执行一次getxmlhttp,update.php里对数据库进行操作,生成表格实现自动刷新的功能
程序能够运行,而且也能够实现自动刷新,但是不知道为什么运行一段时间之后就不能正常的获取到update.php里面的数据了。不知道大家有没有遇到过这种情况?

解决方案 »

  1.   

    防缓存吧。
    var url = "update.php?sid"+Math.random(); 
    或者加入时间
      

  2.   

    你每一次提交的地址都是同一地址
    比如你第一次提交 a.asp
    而你希望asp 输出 aaa 值,asp输出了 aaa 的值,也是对的。
    你第二次提交到 a.asp
    而你希望 asp输出 bbb 值,但asp可能还是输出 aaa 值,最好方法就是地址后加上一个不同的变量,但得每次提交地址一样,但url不同。以防缓存。
      

  3.   

    试了一下,好象不是这个缓存的问题,因为我在js代码里有一直alert(xmlhttp.responestext)
    显示了一段时间就不显示了.感觉好象是程序在哪里死掉了
      

  4.   

    var xmlHttp = null; 
    function Getxmlhttp() 

    var url = "update.php"; if (xmlHttp == null) 

    xmlHttp=GetXmlHttpObject(); 
      if (xmlHttp==null) 
        { 
        alert ("您的浏览器不支持AJAX!请升级浏览器版本!"); 
        return; 
        } } 
    //alert("Object Build Ok"); 
        xmlHttp.onreadystatechange = xmlstatechange;  
        xmlHttp.open("GET",url,true);  
        xmlHttp.send();  //改为:xmlHttp.send(null);  window.setTimeout("Getxmlhttp()",5000); 
      

  5.   

    你的发送请求不一定会成功,最好做个判断吧。让请求成功返回再执行我的能行,不过现在不用了,都用 jquery 了。
    xmlHttp=GetXmlHttpObject();
    if (xmlHttp==null)
    {
    alert ("您的浏览器不支持AJAX!");
    return;
    }
    var url="delevisa.asp?sid="+Math.random()+"&vid="+vid;
    xmlHttp.onreadystatechange=stateChanged;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
    }
    }
    function stateChanged()
    {
    if(xmlHttp.readyState==4)
    {
    temp=xmlHttp.responseText;
    alert (temp);
    window.location.reload();
    }
      

  6.   

        window对象有两个主要的定时方法,分别是setTimeout 和 setInteval 他们的语法基本上相同,但是完成的功能取有区别。  setTimeout方法是定时程序,也就是在什么时间以后干什么。干完了就拉倒。  setInterval方法则是表示间隔一定时间反复执行某操作。
    ====
    请注意这两个定时函数的用法。
      

  7.   

    xmlHttp.send();  //改为:xmlHttp.send(null); 
    是这个原因