从缓存中防止JQUERY .load

时间:2011-07-23 18:36:59

标签: jquery html http

似乎在IE9中,使用jquery .load将从浏览器缓存中提取数据,因此AJAX加载内容的“实时”效果无效。是否有任何类型的切换强制jquery .load来获取新数据?

Thansk!

4 个答案:

答案 0 :(得分:10)

如果使用$.ajax低级方法,则可以在jQuery中使用禁用缓存的选项。这未在load的简化签名中表示。您可以通过确保URL始终是唯一的来模仿它。您可以将当前时间(以毫秒为单位)放在URL的末尾以实现该目的,因为这几乎总是唯一的:

url += '?_=' + (new Date()).getTime();

(这假设url是包含请求URL的字符串,并且当前没有任何查询参数。)

答案 1 :(得分:7)

或者您可以使用$.ajax并将cache选项设置为false,这将导致jQuery在引擎盖下向请求网址添加时间戳:

$.ajax( {
    url: "foo.html",
    type: "GET",
    cache: false,
    success: function(html) {
        $("#foo").html(html);
    }
});

答案 2 :(得分:2)

在您尝试加载的页面内容上,首先发送标头,以便请求不会使用缓存......

例如,在代码顶部添加以下行

<?php
header("Cache-Control: no-cache");
header("Pragma: no-cache");

//Other page contents that have to be loaded

?>

答案 3 :(得分:0)

或者您可以使用

elem.load(url, "f" + (new Date()).valueOf());

以便每个请求都获得一个附加到查询字符串

的新唯一值