这是一个异步的请求,不知道为什么请求的数据不是最新的,说不清了还是看代码吧
var xmlHttp;
function createXMLHttpRequest()
{
    if(window.ActiveXObject)
    {
        try
        {
        xmlHttp=new ActiveXObject('Microsoft.XMLHTTP');
        }
        catch(e)
        {
           xmlHttp=new ActiveXObject('Msxml2.XMLHTTP');           
        }
    } 
  
    
    else if(window.XMLHttpRequest)
    {
        try
        {
            xmlHttp=new XMLHttpRequest;
        }
        catch(ex)
        {
            alert('浏览不支持');
        }
    }
 
}
function getList()
{
   createXMLHttpRequest();   
   url='xml.aspx';
   xmlHttp.open('GET',url,true); 
   xmlHttp.onreadystatechange=handleSomething;
   xmlHttp.send(null); 
   setTimeout("getList()",10000); 
}
function handleSomething()
{  
   
  if(xmlHttp.readyState==4)
    {
        if(xmlHttp.status==200)
        {
          
            var result=xmlHttp.responseText; 
            var xmlDoc=new ActiveXObject("Msxml2.DOMDocument");            
             xmlDoc.loadXML (result); 
            var field=xmlDoc.getElementsByTagName("Table");           
           dis=document.getElementById ("display1");
             var s="";
            for(i=0; i < field.length;i++) 
            { 
                s+=field[i].selectSingleNode("fsid").text+"对";
                s+=field[i].selectSingleNode("jsid").text+"说:";
                dd=field[i].selectSingleNode("liuyan").text;
                if(dd.length>5)
                {
                   dd=dd.substr(0,5)+"...";
                }              
                s+=dd+"\n";
            }
          dis.innerText=s;             
           
         }
       }
       
 }
这是前台的脚本,后台代码是:(xml.aspx)
string strSql = "SELECT TOP 10 * FROM liuYan ORDER BY addTime DESC";
            sqlHelper h = new sqlHelper();
            DataSet ds = h.ExecuteDataSet(strSql, CommandType.Text, null);
            ds.DataSetName = "liuYan";
            XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
            writer.Formatting = Formatting.Indented;
            writer.Indentation = 4;
            writer.IndentChar = ' ';
            ds.WriteXml(writer);
            writer.Flush();
            Response.End();
            writer.Close(); 
不知道为什么数据库里是有最新的消息的,但是总是得不到最新的消息,

解决方案 »

  1.   

    这是ajax数据缓存的原因,你在google上搜"ajax缓存",一堆一堆的。
      

  2.   

    1:在AJAX请求的页面后加个随机函数,我们可以使用随机时间函数 
    在javascript发送的URL后加上t=Math.random() 
    当然,不是直接把t=Math.random()拷贝到URL后面,应该像这样:URL+"&"+"t="+Math.random(); 
    2:在XMLHttpRequest发送请求之前加上XMLHttpRequest.setRequestHeader("If-Modified-Since","0") 
    一般情况下,这里的XMLHttpRequest不会直接使用 
    你应该可以找到这样的代码 
    XXXXX.send(YYYYYY); 
    那么,就把它变成 
    XXXXX.setRequestHeader("If-Modified-Since","0"); 
    XXXXX.send(YYYYYY); 本文来自: 脚本之家(www.jb51.net) 详细出处参考:http://www.jb51.net/article/12431.htm