Ajax调用在Internet Explorer 9和Internet Explorer 10中不起作用

时间:2013-05-14 06:39:22

标签: javascript ajax internet-explorer-9

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

提前致谢....

2 个答案:

答案 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);