xmlHttpRequest缓存是好还是坏呢?
第一次用Ajax做一个定时刷新的东西,结果每次返回值都和第一次一样,在url后面加一个随机数即可解决。
因为只要url不一样js就认为是一个新的请求,不会读缓存了。
先来看最初的这段代码,如下所示:
 
//创建一个xmlHttpRequest对象
function createXMLHttpRequest()
{
var xmlHttp;//定义xmlHttp
    if(window.ActiveXObject)
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest)
    {
        xmlHttp = new XMLHttpRequest();
    }
    return xmlHttp;
}
function Refresh()
{ www.jb200.com
    var xmlHttp = createXMLHttpRequest();
    var url= "NewMessageAlertHandler.aspx";
    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        if(xmlHttp.status==200)
        {
//alert(xmlHttp.responseText);
document.getElementById("divImg").style.display=xmlHttp.responseText;
xmlHttp = null;
setTimeout("Refresh()",5000);
}
    }
    
    };
    xmlHttp.send(null);
    
}
改进后的代码:
 
//创建一个xmlHttpRequest对象
function createXMLHttpRequest()
{
var xmlHttp;//定义xmlHttp
    if(window.ActiveXObject)
    {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if(window.XMLHttpRequest)
    {
        xmlHttp = new XMLHttpRequest();
    }
    return xmlHttp;
}
function Refresh()
{
    var xmlHttp = createXMLHttpRequest();
    var nowTime = new Date().getTime();//获取当前时间作为随机数
    var url= "NewMessageAlertHandler.aspx?time="+nowTime;
    xmlHttp.open("GET",url,true);
    xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
    {
        if(xmlHttp.status==200)
        {
//alert(xmlHttp.responseText);
document.getElementById("divImg").style.display=xmlHttp.responseText;
xmlHttp = null;
setTimeout("Refresh()",5000);
        }
    }
    
    };
    xmlHttp.send(null);
    
}