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);
}