怎么办“HTML FORM action = location.replace('nextpage.html')”?

时间:2016-04-05 14:57:03

标签: javascript html forms

标题实际上是实现我的目标的失败尝试。具体来说,我想要 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()时,它会根据需要返回主菜单。

1 个答案:

答案 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 ,未显示最终输入的任何数据输入用户。