我有这个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> Loading...</b>');
$('#column_weather').load("../includes/home/weather.php");
} `
这就是我调用脚本的方式:
<a href="#" onclick="ajax_request();return false;">Refresh</a>`
答案 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');
?>