微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jquery.get()在IE8 / 9中不起作用.不会加载未修改的缓存页面304

Code Igniter版本’2.0.3′
Jquery 1.7
Jquery History插件

嗨,大家好,

我有一个CodeIgniter应用程序,我以ajax方式构建.我有如下功能

$(document).on('click','.ajax_link',function(e){
    //Stop the normal href action
    e.preventDefault();

    //Grab the destination URL
    var new_url = $(this).attr('href')

    //Grab the content via ajax and pass it to the history change function
    $.get(base_url+new_url,function(data){
        History.pushState({
            content:data.content,url:data.url
        },data.title,data.url);
        //Refresh some site variables
        refresh();
    },'json');
});

它所做的就是使用ajax_link类捕获对锚元素的点击,并将响应发送到处理该响应数据放入页面函数.

这适用于Chrome和FF.我点击链接,jQuery发出get请求,我得到一个JSON对象,我的history.pushState()函数将一些json数据注入我的页面.

我遇到的问题是在IE8中.基本上发生的事情是当我第一次打开应用程序时,链接工作但它们只工作一次.我第二次点击链接

> ajax GET
>收到304(未修改)的回复
>不调用jQuery.get()回调函数,因此停止死亡.

如果我清除缓存它再次工作.所以我的假设是IE正在执行get请求,但后来它发现它已经在过去请求了完全相同的文件…因此完全停止了该过程.

有人知道解决这个问题吗?我已经看过在IE中提到304错误和ajax和缓存的错误但是还没有找到与我相同的问题.

任何帮助非常感谢

(在Windows虚拟机IE8和Internet Explorer 9中的IE 8模式上测试)

解决

只需要将以下代码添加到我的document.ready函数中,问题就消失了.

$.ajaxSetup ({cache: false});

解决方法

改变这一行:
var new_url = $(this).attr('href')

对此:

var new_url = $(this).attr('href') + '?' + Math.random();

这被称为“CacheBuster”并有效地创建类似于以下的URL:

"website.com/page.html?1241233"

对于“.ajax_link”的每次点击,该随机数将是不同的,因此IE将认为它是一个页面并正确地获得它.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


jQuery表单验证提交:前台验证一(图文+视频)
jQuery表单验证提交:前台验证二(图文+视频)
jQuery如何实时监听获取input输入框的值
JQuery怎么判断元素是否存在
jQuery如何实现定时重定向
jquery如何获取复选框选中的值
jQuery如何清空form表单数据
jQuery怎么删除元素节点
JQuery怎么循环输出数组元素
jquery怎么实现点击刷新当前页面