当前位置:  开发笔记 > 编程语言 > 正文

Internet Explorer 7 Ajax链接仅加载一次

如何解决《InternetExplorer7Ajax链接仅加载一次》经验,为你挑选了2个好方法。

我正在编写一个应用程序,我正在尝试将简单的AJAX功能结合起来.它在Mozilla Firefox中运行良好,但在Internet Explorer中有一个有趣的错误:每个链接只能被点击一次.浏览器必须完全重启,只需重新加载页面就行不通.我写了一个非常简单的示例应用程序来演示这一点.

Javascript转载如下:

var xmlHttp = new XMLHttpRequest();

/*
item: the object clicked on
type: the type of action to perform (one of 'image','text' or 'blurb'
*/
function select(item,type)
{

    //Deselect the previously selected 'selected' object
    if(document.getElementById('selected')!=null)
    {
        document.getElementById('selected').id = '';
    }
    //reselect the new selcted object
    item.id = 'selected';

    //get the appropriate page
    if(type=='image')
        xmlHttp.open("GET","image.php");
    else if (type=='text')
        xmlHttp.open("GET","textbox.php");
    else if(type=='blurb')
        xmlHttp.open("GET","blurb.php");

    xmlHttp.send(null);
    xmlHttp.onreadystatechange = catchResponse;

    return false;

}
function catchResponse()
{
    if(xmlHttp.readyState == 4)
    {
        document.getElementById("page").innerHTML=xmlHttp.responseText;
    }

    return false;
}

任何帮助,将不胜感激.



1> tj111..:

发生这种情况是因为Internet Explorer忽略了no-cache指令,并缓存了ajax调用的结果.然后,如果下一个请求相同,它将只提供缓存版本.有一个简单的解决方法,那就是在查询的末尾添加随机字符串.

 xmlHttp.open("GET","blurb.php?"+Math.random();



2> pkaeding..:

看起来IE正在缓存响应.如果要么更改对POST方法的调用,要么发送相应的标头告诉IE不要缓存响应,它应该可以工作.

我发送的标头确保它不缓存是:

Pragma: no-cache
Cache-Control: no-cache
Expires: Fri, 30 Oct 1998 14:19:41 GMT

请注意,到期日期可以是过去的任何时间.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有