【发布时间】:2016-04-09 01:43:34
【问题描述】:
标题实际上是我实现目标的失败尝试。具体来说,我想
1. 从 main.html 转到一个页面(例如,到 page1.html)。
2.在page1的表单中收集数据。
3. 在提交时,转到 page2.html(使用 PHP 将数据保存到数据库并公布结果)。
4. 点击“确定”返回主菜单页面。
看起来很合理,对吧?
上面的第 4 步是我的问题。
我尝试过的事情:
1. 在 page2 中单击 Ok 时调用 history.back。
这会转到 page1 而不是主页面
2. 在 page2 中的“Ok”上调用 javascript location.href=main.html
这可以工作并转到 main,但单击 main 中的 Back 按钮会将用户带回 page1。 (不好)
3. 在 page1 的 action= 和 onSubmit() 中使用 javascript history.replace() 的许多变体。
这可行,但来自表单的输入不在查询字符串中传递给第2页)
4. 清除历史记录。
出于安全考虑,这似乎是不可能的。
5. 以编程方式编写第 1 页上 history.replace 的查询字符串(来自表单输入)。
这很有效,但非常费力、容易出错并且非常不雅
任何建议将不胜感激。
========= 我的解决方案 4/8/16 ==============
我将在下面为任何感兴趣的人发布我的最终解决方案。
在page1.html中:
<script type="text/javascript">
function addarg(q,addend)
{
qnew = q + addend;
return( qnew );
}
function Next()
{
// GET INPUT VALUES FROM FORM
frm = document.forms["MainForm"];
first = frm.first.value;
last = frm.last.value;
phone = frm.phone.value;
// COMPOSE QUERY
query = "processForm.php";
query = addarg( query, '?first='+first );
query = addarg( query, '&last='+last );
query = addarg( query, '&phone='+phone );
location.replace( query ); // chain to processing page
}
</script>
<form action="javascript:Next()" name="MainForm" method=GET>
...
</form>
当从 processForm.php 发出 history.back() 时,它会根据需要返回到主菜单。
【问题讨论】:
标签: javascript html forms