防止在IE中缓存ajax-jquery加载的外部文件

时间:2009-08-25 13:29:44

标签: ajax

我有这个jquery脚本来调用外部文件。到现在为止还挺好。该脚本工作正常,但一如既往IE制作他想要的东西。我用这个脚本加载的外部文件(weather.php)是一个包含实时天气状况数据的文件。使用这个脚本,我可以刷新div里面的天气。我的weather.php文件。显然我不希望IE在这个文件中缓存数据。我想当有人点击按钮“REFRESH”时,包含的页面将重新加载其中的新数据。在IE中,由于缓存,这不会发生。 如何更改此脚本以不缓存div的内容,或者如何对我的包含文件(weather.php)说不自行缓存?

这是剧本:

function ajax_request() {
$('#column_weather').html('<img src="../images/home/ajax-loader.gif" width="16" height="11" style="vertical-align:middle;"/><b>&nbsp;&nbsp;Loading...</b>');
$('#column_weather').load("../includes/home/weather.php");

} `

这就是我调用脚本的方式:

<a href="#" onclick="ajax_request();return false;">Refresh</a>`

4 个答案:

答案 0 :(得分:2)

在查询字符串上放置一个随机变量

$('#column_weather').load("../includes/home/weather.php?myRand=" + guid());

我会让随机var返回一个guid

function s4() {
       return (((1+Math.random())*0x10000)|0).toString(16).substring(1);
}

function() guid{
       return s4()+s4()+"-"+s4()+"-"+s4()+"-"+s4()+"-"+s4()+s4()+s4();
}

答案 1 :(得分:0)

你不能在这个weather.php文件中有适当的缓存说明(比如说不要缓存它)

答案 2 :(得分:0)

我会将当前日期和时间作为GET参数附加。 Internet Explorer(和其他浏览器)将此信息视为加载页面的关键,就像任何函数返回具有不同参数的不同值一样。诀窍是你不必使用参数。 :)

$('#column_weather').load("../includes/home/weather.php?t=" + date());

答案 3 :(得分:0)

在查询网址末尾添加随机参数会有所帮助,但请尝试将其添加到weather.php的开头:

<?php 
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); 
header('Cache-Control: no-store, no-cache, must-revalidate'); 
header('Cache-Control: post-check=0, pre-check=0', FALSE); 
header('Pragma: no-cache'); 
?>