我一直在研究这个,但找不到这个不起作用的原因。我通过捕获表单,在捕获器中重建并尝试在捕获页面加载时提交到新页面,将表单数据从一个页面直接传递到另一个页面。我正在寻找一个快速的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>
答案 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