jQuery在IE中会缓存AJAX请求,尽管已经设置了cache: "false"。

9
我有如下代码。
$.ajax({type: "GET",
  url: "/" + filename,
  dataType: "xml",
  cache: "false",
  success: function(xml)
{
    /* Parsing code here */
}});

在Chrome等浏览器中,请求不会被缓存,但在IE中会被缓存。我是否正确构造了我的请求?
2个回答

22

cache 应该是一个布尔值,而不是一个字符串:

$.ajax({type: "GET",
  url: "/" + filename,
  dataType: "xml",
  cache: false,
  success: function(xml){
    /* Parsing code here */
  }  
});

2
如果不使用 === 进行比较,一个字符串 "false" 将被解释为 true - Pekka
4
@Pekka - 这是真的,但在这个特定的案例中,jQuery会使用 === 进行比较,不过它只会尝试避免缓存如果 s.cache === false (但是,“false” === false => false)。 - Matt
3
@James:做编程比从事喜剧事业是个好选择。:P - Matt
这是一个布尔值问题,将"false"更改为false即可解决。 - Chris

0

也许是你返回的xml文件的mimetype有问题? http://www.nerdydork.com/ie-json-caching-bug.html

我的博客上有一位评论者建议在json请求中添加时间戳:

我不会相信在.ajaxSetup中将缓存设置为关闭....

所以只需在每个json请求的末尾添加一个时间戳,例如:

$.getJSON( '/url/', { data: 123, t: (new Date()).getTime() }, function(data) { //do whatever } );


我不会相信在.ajaxSetup中将缓存设置为关闭...为什么?它确实做了完全相同的事情! - ˈvɔlə

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接