【问题标题】:Overwrite page cache after ajaxajax后覆盖页面缓存
【发布时间】:2018-06-16 05:47:25
【问题描述】:

我无法为这个问题找到一个直接的答案。

我有一个管理面板,如果用户输入密码,它会显示额外的选项。如果密码正确,这些额外的选项会附加到页面中。

带密码输入的管理面板:

加载超级管理员选项并将它们附加到页面的Javascript:

  function showAdminOptions(e) {
    e.preventDefault();
    var data = new FormData();
    data.append('additional_password', document.getElementById('additional_password').value);
    var xhr = new XMLHttpRequest();
    xhr.open('POST', 'show_admin_options.php', true);
    xhr.withCredentials = true;
    xhr.onload = function() {
      if (xhr.status >= 200 && xhr.status < 400) {
        // Success!
        document.getElementById('show_admin_options').innerHTML = xhr.responseText;
      } else {
        alert("ERROR");
      }
    };
    xhr.onerror = function() {
      alert("ERROR");
    };
    xhr.send(data);
  }

注意:如果密码正确,额外选项的标记将从show_admin_options.php 返回。

输入正确密码后带有额外选项的管理面板:

问题是,当输入正确密码的人离开页面然后点击返回按钮时,它会加载原始版本的管理页面而没有额外的选项。

我可以做些什么来让缓存将页面保存在它的状态w/额外的选项?

【问题讨论】:

  • 这更像是一个$_SESSION 问题而不是缓存问题。
  • @NappingRabbit 我不这么认为,因为如果他们点击后退按钮,它不会显示额外的选项。但是,如果他们随后刷新页面,它确实会显示额外的选项。正在保存 $_SESSION 变量。
  • 哦,原来如此,我误会了

标签: javascript php ajax caching


【解决方案1】:

我的解决方案

我决定忘记异步执行此操作,并使用 POST 方法和相同 url 的操作提交表单。然后,PHP 模板使用已设置的 $_SESSION 变量呈现管理选项。

【讨论】:

    猜你喜欢
    • 2012-03-19
    • 1970-01-01
    • 2014-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 1970-01-01
    相关资源
    最近更新 更多