Javascript 插入浏览器&x27;提交表单前的历史记录条目
我有两个网页:index.php和handler.php index.php有一个表单提交给handler.php,如下所示: php?输入=一些+数据 我的目标是做一些事情,让浏览器的后退按钮将我带到Javascript 插入浏览器&x27;提交表单前的历史记录条目,javascript,php,html,Javascript,Php,Html,我有两个网页:index.php和handler.php index.php有一个表单提交给handler.php,如下所示: php?输入=一些+数据 我的目标是做一些事情,让浏览器的后退按钮将我带到index.php?input=some+data,而不是简单的index.php。我该怎么做?理想情况下,我更喜欢尽可能多地使用php而不是js 解决方案: 我添加了执行以下操作的提交处理程序: function onFormUpdate() { window.history.repla
index.php?input=some+data
,而不是简单的index.php
。我该怎么做?理想情况下,我更喜欢尽可能多地使用php而不是js
解决方案:
我添加了执行以下操作的提交处理程序:
function onFormUpdate()
{
window.history.replaceState({} , '', 'index.php?' + document.forms[0].serialize());
}
这样,表单将不是从index.php
提交的,而是从index.php?input=some+data
提交的。也就是说,返回按钮将使我返回到index.php?input=some+data
您可以通过:(JS)执行此操作
在提交之前
但我认为您不需要这样做,我的浏览器(firefox,尽管我认为chrome也会这样做)在提交之前保存表单数据,因此当我从处理程序返回时,表单仍然有输入。我认为修改历史记录是不可能的。您可以考虑在提交表单之前使用URL的散列(例如)。等待,当返回到您发送该数据的页面时,是否希望将数据发送到<代码> index?PHP>代码>?@ max,是的,这正是我想要的。尝试返回index.php时,应将相同的数据发送到index.php。尼古拉斯:我不需要修改历史,我需要创造历史。例如,我可以将表单提交到index.php,然后使用相同的URL参数以某种方式重定向到handler.php。这样,后退按钮将带我回到
index.php?input=some+data
。。。这里的问题是,当我实际转到index.php?input=some+数据时,它会将我重定向到handler.php?input=some+数据。我发现这个问题非常有趣,于是对它进行了一些研究(不幸的是没有成功,这就是为什么我要发表评论的原因…)。我能想到的唯一方法是使用会话/cookies,经过实验,我可以告诉你,它比听起来更复杂。。。即使一切看起来都正常工作,HTTP响应标题位置
之间的页面也不会保存到历史记录中(这是您想要的),遗憾的是,它似乎不是一个非常准确的方法。@Max suggestion by Parchant非常有效。我用解决方案更新了问题,我会试试的。在FF中,我曾经保存表单,然后在更新FF后的某个时刻,它停止工作,表单数据现在被重置。铬可以保护它。。。但目标实际上是获取真实历史中的index.php?input=some+数据,以便我可以返回并复制该链接。所以这不仅仅是关于保存表单数据。经过验证,它完全符合我的要求onsubmit=“history.replaceState({},,'index.php?'+document.forms[0].serialize());”
history.replaceState({}, '', 'index.php?input=some+data');