微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

即使用户单击“返回”,也将PHP变量传递给javascript

让我们从一个典型的PHP / html / JavaScript环境开始.跳过< head>和< body>假设我们有:

<script>
    var foo = <?PHP echo generateFoo(); ?>;
</script>

让我们假设这在各个方面都可以正常工作,除了一个小的缺陷.也就是说,每当我离开页面并单击“返回”时,都会得到foo的旧值,而不是更新的值.

我了解这个错误.单击“后退”将从缓存而不是服务器中加载页面,因此它将返回到PHP的先前值,而不是当前值.但是,我希望它强制更新. (这尤其重要,因为用户可能会在另一页上更改值,并且不是html专家的人会期望“返回”将您带到上一页的更新版本.代码总是更容易更改比用户行为).

我该写些什么,使其功能与上面的代码完全相同,但在用户向后导航时也将执行?

(我认为正确的解决方案可能使用AJAX,但也许我错了.该页面已经在使用jquery CDN中的AJAX,因此,如果可以的话,我也可以使用它.)

编辑:

一个允许缓存但仅更新一个变量的解决方案将是理想的.但是,如果停止缓存是唯一的解决方案,我什至不知道该怎么做.所以告诉我该怎么做会很好.

直接从我的代码复制而无需更改:

<?PHP

    header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0 ");
?>

所以是的,我已经尝试停止缓存了.它在BFCache中不起作用.

解决方法:

Check out this thread代码示例:

window.addEventListener("pageshow", function (event) {
  var historyTraversal = event.persisted || 
                         (typeof window.performance != "undefined" && 
                              window.performance.navigation.type === 2);
  if (historyTraversal) {
    // Reload the page.
    window.location.reload();
  }
});

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐