ajax 缓存老是得不到新的response 以前为这个都烦死了,今天无意中发现原来我没有太多的思考,解决方法很简单:
<
script type
=
"
text/javascript
"
>
var xmlHttp;
function createXMLHttpRequest() ... {
if (window.ActiveXObject)...{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest)...{
xmlHttp = new XMLHttpRequest();
}
}
function dealAct(myurl) ... {
var url = myurl;
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
document.getElementById("float").style.display="block";
xmlHttp.open("GET",url);
xmlHttp.send(null);
}
function handleStateChange() ... {
document.getElementById("content").innerHTML = "<img src=images/loading.gif>數據載入中....";
if(xmlHttp.readystate == 4)...{
if(xmlHttp.status == 200)...{
document.getElementById("content").innerHTML = xmlHttp.responseText;
var flag = MsgProject.SendWriteMail.CheckSession();
if(flag.value==true)
...{
//alert(flag.value);
document.getElementById("float").style.display='none';
document.getElementById("content").innerHTML ="沒有數據!";
}
//alert( xmlHttp.responseText);
}
}
}
function getdata()
... {
var round = new Date().getTime();
var thisurl = "maillist.aspx?Rnd="+round;
dealAct(thisurl);
}
</ script >
// 调用:
<body MS_POSITIONING="GridLayout" onload="getdata()">
var xmlHttp;
function createXMLHttpRequest() ... {
if (window.ActiveXObject)...{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest)...{
xmlHttp = new XMLHttpRequest();
}
}
function dealAct(myurl) ... {
var url = myurl;
createXMLHttpRequest();
xmlHttp.onreadystatechange = handleStateChange;
document.getElementById("float").style.display="block";
xmlHttp.open("GET",url);
xmlHttp.send(null);
}
function handleStateChange() ... {
document.getElementById("content").innerHTML = "<img src=images/loading.gif>數據載入中....";
if(xmlHttp.readystate == 4)...{
if(xmlHttp.status == 200)...{
document.getElementById("content").innerHTML = xmlHttp.responseText;
var flag = MsgProject.SendWriteMail.CheckSession();
if(flag.value==true)
...{
//alert(flag.value);
document.getElementById("float").style.display='none';
document.getElementById("content").innerHTML ="沒有數據!";
}
//alert( xmlHttp.responseText);
}
}
}
function getdata()
... {
var round = new Date().getTime();
var thisurl = "maillist.aspx?Rnd="+round;
dealAct(thisurl);
}
</ script >
// 调用:
<body MS_POSITIONING="GridLayout" onload="getdata()">
关键是:
var round = new Date().getTime();
var thisurl = "maillist.aspx?Rnd="+round;
产生了随机的页,也就是说创建了新的response对象
使用AJAX取得远程服务器端数据,刷新后不能更新数据内容。这是因为IE缓存的原因,有两种解决办法。 一、在服务器端设定内容禁止缓存,代码如下: Response.ExpiresAbsolute = DateTime.Now.AddDays(-1) 二、浏览器的缓存是以url为标识的,在url后加个随机参数就可以保证每次的url不同,就不会用到缓存了。 url = "showDetails.do?id="+ curID + "&Rnd=" + new Date().getTime(); |