我使用此功能使用ajax显示项目页面。它在Chrome上工作正常。但不适用于Internet Explorer。
<script type="text/javascript">
function grabInfo(str)
{
if (str=="")
{
document.getElementById("contentDiv").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("contentDiv").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","get_property.php?q="+str,true);
xmlhttp.send();
}
</script>
此功能在Chrome上返回更新的结果。但在Internet Explorer中,此功能会返回之前的结果。如果我使用Ctrl + Shift + Del清除会话,系统会显示更新的结果。为什么会发生这种情况? 你能帮上忙吗?
提前致谢....
答案 0 :(得分:1)
Internet Explorer缓存响应。您可以使用Math.random()
在请求URL的查询字符串中添加随机值,也可以在服务器端脚本中包含响应头。
Cache-Control: no-cache, no-store
答案 1 :(得分:1)
问题是IE缓存了请求,只要查询字符串没有改变就返回相同的响应,这可以由服务器端头处理,
Cache-Control: no-cache, no-store
但最简单的方法就是像这样修改请求:
xmlhttp.open("GET","get_property.php?q="+str+"&r="+Math.random(),true);