【问题标题】:Ajax Load - How to force load [duplicate]Ajax Load - 如何强制加载
【发布时间】:2013-10-10 08:30:57
【问题描述】:

我正在尝试加载一个页面并将其放入一个 div 中。

代码:

 $("#test").load("page.php");

问题是一旦加载,有时当我重新执行这个脚本时,似乎文件'page.php'是不是真的重新加载,似乎该文件保存在缓存中或类似的东西中。

这确实是个问题,因为我在这个文件中有一个 PHP 请求,它没有执行它。

【问题讨论】:

    标签: javascript jquery ajax


    【解决方案1】:

    这是一个缓存问题。您可以更改 ajaxsetup,或使用随机字符串执行某些操作。

    缓存发生的原因是因为您两次请求相同的 url。它已经获取了那个结果,所以它只是获取缓存的值。简单的技巧是随机添加一些东西:

    $("#test").load("page.php?_"+Math.random());
    

    我使用下划线,因为它不会覆盖任何其他获取值(jQuery 的做法大致相同)

    【讨论】:

    • 为了我自己的利益,为什么其他帖子得到了投票,而我没有?我没有看到任何比我的回复更好的信息。对于我未来的帖子,我做错了什么?
    【解决方案2】:

    您可以强制不在ajaxSetup 中缓存它,并在不需要时将其重置。 .load 只是一个 ajax 调用,cache 默认为 true。

    $.ajaxSetup ({
        cache: false
    });
    

    【讨论】:

      【解决方案3】:

      浏览器正在缓存请求。它认为它知道它会得到的结果,所以它没有发送请求。

      要解决此问题,请在 url 末尾添加一个动态 get 参数。这会诱使浏览器每次都期待新的东西。

      这是一个示例代码:

      $("#test").load("page.php?v=" + Math.random());
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多