【问题标题】:jQuery caches AJAX request in IE even though cache: "false" is setjQuery 在 IE 中缓存 AJAX 请求,即使设置了 cache: "false"
【发布时间】:2011-02-16 11:00:51
【问题描述】:

我有以下代码

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

在 Chrome 等中,请求不会被缓存,但是它们在 IE 中。我是否正确构建了我的请求?

【问题讨论】:

    标签: jquery ajax internet-explorer caching


    【解决方案1】:

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

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

    【讨论】:

    • +1 字符串"false" 如果不使用=== 比较,将被解释为true
    • @Pekka - 这是真的,但在这种特定情况下,jQuery DOES compare with ===,但它只会在s.cache === false 时尝试避免缓存(当然,“false”=== false => false )
    • @James:干得好,你选择编程而不是喜剧作为职业道路。 :P
    • 这是布尔的事情,从 "false" 更改为 false 有效。 ta
    【解决方案2】:

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

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

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

    所以只需在末尾添加一个时间字符串 每个json请求,例如

    $.getJSON('/url/', { 数据: 123, t: (新日期()).getTime() }, function(data) { //做任何事情 } );

    【讨论】:

    • I’m not going to trust in setting the cache to off in .ajaxSetup… - 为什么???它完全做同样的事情!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2013-03-21
    • 2012-05-10
    • 1970-01-01
    • 2012-07-07
    • 1970-01-01
    相关资源
    最近更新 更多