- 代码点火器版本“2.0.3”
- jQuery 1.7
- Jquery 历史插件
我有一个以 ajax 方式构建的 CodeIgniter 应用程序。我有一个功能如下:
$(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 发出获取请求,我返回一个 JSON 对象,我的 history.pushState() 函数将一些 json 数据注入我的页面。
我遇到的问题是在 IE8 中。基本上发生的事情是当我第一次打开应用程序时,链接有效,但它们只有效一次。我第二次点击它的链接:
- 有没有ajax
GET
- 收到 304(未修改)的响应
- 不调用
jQuery.get()
回调函数,因此停止死亡。
如果我清除缓存,它会再次工作。所以我的假设是 IE 正在执行获取请求,但随后它发现它在过去已经请求了完全相同的文件......因此完全停止了该过程。
有人知道解决这个问题吗?我已经查看了 304 错误和 IE 中 ajax 和缓存错误的提及,但还没有发现与我相同的问题。
非常感谢任何帮助
(在 Windows 虚拟机 IE8 和 Internet Explorer 9 中的 IE 8 模式下测试)
解决了
只需将以下代码添加到我的 document.ready 函数中,问题就消失了。
$.ajaxSetup ({cache: false});