Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 插入浏览器&x27;提交表单前的历史记录条目_Javascript_Php_Html - Fatal编程技术网

Javascript 插入浏览器&x27;提交表单前的历史记录条目

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和handler.php index.php有一个表单提交给handler.php,如下所示:

php?输入=一些+数据

我的目标是做一些事情,让浏览器的后退按钮将我带到
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');