1

我使用此功能使用 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 清除会话,系统会显示更新的结果。为什么会这样?你能帮忙吗?

提前致谢....

4

2 回答 2

1

Internet Explorer 缓存响应。您可以使用在请求 URL 的查询字符串中添加随机值,也可以Math.random()在服务器端脚本中包含响应标头。

Cache-Control: no-cache, no-store
于 2013-05-14T06:44:38.473 回答
1

问题是 IE 缓存请求,只要查询字符串不改变它返回相同的响应,这可以由服务器端标头处理,

Cache-Control: no-cache, no-store

但最简单的方法就是像这样修改请求:

xmlhttp.open("GET","get_property.php?q="+str+"&r="+Math.random(),true);
于 2013-05-14T06:45:09.363 回答