表单提交onload短道理?

时间:2013-12-21 19:21:34

标签: javascript

我一直在研究这个,但找不到这个不起作用的原因。我通过捕获表单,在捕获器中重建并尝试在捕获页面加载时提交到新页面,将表单数据从一个页面直接传递到另一个页面。我正在寻找一个快速的qay来做到这一点,我很好奇为什么以下不起作用:

<body onload="document.forms['frm'].submit()">
<form action='EditCampaign.php' method='post' name='frm'>
<?php
foreach ($_POST as $a => $b) {
echo "<input type='hidden' name='".htmlentities($a)."' value='".htmlentities($b)."'>";
}
?>
</form>
</body>

2 个答案:

答案 0 :(得分:1)

  

对象#<HTMLFormElement>的属性“提交”不是函数

您的一个输入有name="submit"。这会覆盖表单的submit方法,并引用HTMLElementNode

如果你想以编程方式提交它,你需要从其他地方获得一个新的。

document.createElement('form').submit.apply( document.forms.frm );

在旧的Internet Explorer中,这不起作用(并且无法执行此操作)。


那就是说,无论如何你应该找到一个不同的方法来解决问题。数据正在提交给您的服务器,您不需要通过客户端传递数据,以便将其传递到同一服务器的不同部分。

即使您确实将其传递给另一台服务器(action='EditCampaign.php'建议您不是这样),然后在查询字符串中使用标识令牌与Location标头进行某种服务器间通信可能是个更好的主意。

答案 1 :(得分:0)

试试这个,添加了action="yourpageurlhere"

  <body onload="document.forms['frm'].submit()">

    <form name="frm" id="frm" action="yourpageurlhere">
      <input blah blah blah...>
   </form>
</body>

而不是

  document.frm.submit()

参考:https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.submit