在ajax之后覆盖页面缓存

时间:2018-01-06 17:48:03

标签: javascript php ajax caching

我还没有找到这个问题的直截了当的答案。

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

管理员面板带密码输入: Regular admin panel w/second password input

加载超级管理员选项并将其附加到页面的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 /额外选项,输入正确的密码后 Admin Panel w/extra options

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

我该怎么做才能让缓存将页面保存在其状态下的额外选项?

1 个答案:

答案 0 :(得分:0)

我的解决方案

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