标题实际上是实现我的目标的失败尝试。具体来说,我想要 1.转到main.html的页面(例如,转到page1.html) 2.在第1页的表格中收集数据 3.在提交时,转到page2.html(使用PHP将数据保存到数据库并公布结果) 4.单击“确定”并返回主菜单页面 看似合理,对吧?
上面的第4步是我的问题。
我尝试过的事情:
1.在第2页的Ok点击中调用history.back
这是第1页而非主要
2.在第2页的“确定”中调用javascript location.href = main.html
这可以工作并转到main,但是单击main中的Back按钮会将用户返回到page1。 (不好)
3.在第1页的action =和onSubmit()中使用javascript history.replace()的许多变体
这项工作正常,但表单中的输入不在查询字符串中传递给page2 )
4.清晰的历史
由于安全问题,这似乎是不可能的。
5.以编程方式为第1页上的history.replace(来自表单输入)创建查询字符串
这有效,但非常费力,容易出错且非常不优雅
任何建议都将不胜感激。
========= MY SOLUTION 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()时,它会根据需要返回主菜单。
答案 0 :(得分:2)
实现此目标的更简单方法是在 page2.html 上放置一个简单的<a href=main.html>Ok</a>
。
然后在此 main.html 上关联一个标志(可能是一个Cookie),其中&#34;指示&#34; page1.html 如果 main.html 没有调用它,则清除其表单元素,但是来自&#34;返回&#34;按钮(例如,通过刷新元数据,或通过加载 page1.html #randomnum ,其中randomnum是您实时发现的值,迫使浏览器理解这不是&#34; old&#34 ; page1.html ,但是&#34;新&#34; page1.html ,帮助浏览器不要从缓存中获取此内容,而是从网上获取此内容。
原则是:如果 page1.html 被&#34; back&#34;调用,则必须是&#34; clear&#34; page1.html ,未显示最终输入的任何数据输入用户。