-1

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

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

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

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

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

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

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

4

1 回答 1

1

Post/Redirect/Get 模式

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

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

在这种情况下,从技术上讲,后退按钮会返回两页。如果您想进一步返回一页:不要这样做,它会让您的用户感到不安。

于 2013-10-17T09:01:13.920 回答