代码之家  ›  专栏  ›  技术社区  ›  Spoonk

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

  •  1
  • Spoonk  · 技术社区  · 17 年前

    我有这个jquery脚本来调用外部文件。到现在为止,一直都还不错。剧本写得很好,但一如既往.我用这个脚本(weather.php)加载的外部文件是一个包含实时天气条件数据的文件。在这个脚本中,我可以刷新DIV,其中是weather.php文件。很明显,我不想IE缓存这个文件中的数据。我希望当有人点击“刷新”按钮时,包含的页面将重新加载新数据。在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 回复  |  直到 11 年前
        1
  •  2
  •   Zoidberg    17 年前

    在查询字符串中放入一个随机变量

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

    我会让random 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();
    }
    
        2
  •  0
  •   DmitryK    17 年前

    难道你不能在weather.php文件中有适当的缓存指令吗(比如说不要缓存它)

        3
  •  0
  •   JoshJordan    17 年前

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

    $('#column_weather').load("../includes/home/weather.php?t=" + date());
    
        4
  •  0
  •   nikc.org    17 年前

    将随机参数添加到查询URL的结尾将有所帮助,但请尝试将其添加到 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'); 
    ?>