【问题标题】:In Javascript, can I “clear” the browser (history -1) after a form submission?在 Javascript 中,我可以在提交表单后“清除”浏览器(历史记录 -1)吗?
【发布时间】:2013-10-17 08:39:56
【问题描述】:

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

我想用 POST 提交表单数据,这样我就不能使用 $.post 之类的了;

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

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

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

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

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

【问题讨论】:

    标签: javascript forms browser-history


    【解决方案1】:

    这里是Post/Redirect/Get pattern

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

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

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

    【讨论】:

    • 非常感谢您的回复!我不知道这种模式,知识总是很受欢迎:)
    猜你喜欢
    • 2011-04-19
    • 1970-01-01
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-27
    • 1970-01-01
    • 2013-12-01
    相关资源
    最近更新 更多