自动提交表单不携带表单变量

Auto Submitted form does not carry form variables

本文关键字:表单 变量 提交      更新时间:2023-09-26

下面的表单在5秒后使用quto javascript提交时不携带表单变量。

正常提交工作正常


<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Test</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<SCRIPT LANGUAGE="JavaScript"><!--
setTimeout('document.test.submit()',5000);
//--></SCRIPT>
</head>
<body>
<form name="test" id="form1" method="post" action="auto2.php">
  <p>
    <INPUT TYPE=checkbox NAME="test" VALUE="option1"> Option1
    <INPUT TYPE=checkbox NAME="test" VALUE="option2"> Option2
    <INPUT TYPE=checkbox NAME="test" VALUE="option3"> Option3   
  </p>
  <p><input type="submit" name="submit_test" value="Submit_test" />
&nbsp;  </p>
</form>
</body>
</html>
---------------------------------------------------------------
output page:
--------------------------------------------------------------
<?php
if(isset($_POST['submit_test'])){
$variable=$_POST['test'];
echo $variable;
}
?>

任何帮助都是非常感谢的。谢谢你。

您正在测试submit_test按钮值是否设置:

if(isset($_POST['submit_test'])){

自动提交表单不会设置该值,所以测试失败。

您应该测试其他表单字段,如隐藏元素

除非复选框被选中,否则你不会得到任何响应(空白或其他)

应该改成

<input type=hidden name="test" value="">
<INPUT TYPE=checkbox NAME="test" VALUE="option1"> Option1
<INPUT TYPE=checkbox NAME="test" VALUE="option2"> Option2
<INPUT TYPE=checkbox NAME="test" VALUE="option3"> Option3  

这样当你发布你的表单时你会得到一个默认值

对Pekka的回答

+1

如果您执行以下操作,它将检查页面是否已发布,而无需在发布中设置变量。

if ($_SERVER['REQUEST_METHOD'] === 'POST') { ... }

您可能还应该放入某种形式的验证,以确保它来自您期望的位置