Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使用户单击“将PHP变量传递给javascript”;“后退”;_Javascript_Php_Jquery_Ajax - Fatal编程技术网

即使用户单击“将PHP变量传递给javascript”;“后退”;

即使用户单击“将PHP变量传递给javascript”;“后退”;,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,让我们从一个典型的PHP/html/JavaScript环境开始。跳过和假设我们有: <script> var foo = <?php echo generateFoo(); ?>; </script> 是的,我已经尝试停止缓存。它在BFCache中不工作。代码示例: window.addEventListener("pageshow", function (event) { var historyTraversal = event.persi

让我们从一个典型的PHP/html/JavaScript环境开始。跳过
假设我们有:

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

是的,我已经尝试停止缓存。它在BFCache中不工作。

代码示例:

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();
  }
});

是的,你说得对。你应该在每个请求中获取一个新的
foo
。我也这么怀疑,但我在任何地方都找不到没有更新div框内容的ajax示例。我只是不知道正确的语法。但我不确定Ajax请求是否能解决您的问题。如果页面是从缓存加载的,通常意味着也不会触发任何“onload”事件。因此,除非您强制用户单击某个链接/按钮来触发Ajax请求,否则我打赌您最终会遇到同样的问题。@MagnusEriksson好吧,这当然可以解释为什么我找不到一个有效的示例。这在以前被问过很多次,并且得到了不同的建议和解决方案,取决于询问者的需要。在谷歌上搜索“强制页面在后退按钮上重新加载”,并检查是否有任何问题的解决方案适合您的情况。这将需要一些时间来测试。(我无法在本地主机上复制此问题。)我马上回来。我不知道它是如何工作的,但它工作正常。干得好。这是否意味着我现在应该删除我的标题?包含对代码段的解释。代码看起来非常熟悉。我想我试过了,但失败了。不过,它确实有效。不管我怎么努力,我都无法打破它。最好不要猜测我最后尝试的代码是什么。
    header("Cache-Control: no-cache, no-store, must-revalidate");
    header("Pragma: no-cache");
    header("Expires: 0 ");
?>
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();
  }
});