在Javascript中,我可以在表单提交后“清除”浏览器(history -1)吗?

In Javascript, can I “clear” the browser (history -1) after a form submission?

本文关键字:浏览器 history 清除 Javascript 我可以 表单提交      更新时间:2023-09-26

我有一个包含两个页面的网站:页面A带有表单和提交按钮;页面B显示基于页面A中的数据的计算结果。

我想用 POST 提交表单数据,这样我就不能使用 $.post 或其他任何东西;

我不能使用 document.location.replace('ULRPageB?param1=value1&...&paramN=valueN'),因为参数必须从查询字符串中隐藏。

但我必须确保,如果用户从页面 B 单击浏览器的 BACK 按钮,他会后退两页,而不仅仅是一页。

假设不能修改:换句话说,问题是:

存在一种方法来对servlet执行GET而不是AJAX,替换历史记录:是document.location.replace。

是否存在一种等效的方式来对替换历史记录的 servlet 执行 POST 而不是 AJAX?

有 Post/Redirect/Get 模式

  1. 浏览器使用 HTTP POST 提交表单。
  2. 服务器设置位置 HTTP 响应标头字段。
  3. 浏览器向位置 HTTP 响应标头字段中提到的页面发出 HTTP GET 请求

这使得后退按钮的行为更加用户友好,因为它不会返回到接受 POST 的页面(因此没有"POST 数据已过期"警告,也没有意外重复提交)。相反,后退按钮返回到显示表单的页面。

在此方案中,后退按钮在技术上返回两页。如果你想再往后退一页:不要这样做,它会让你的用户感到不安。