Javascript 提交表单后未设置值
我正在尝试将用户的签入值插入数据库。为此,我调用函数并设置隐藏字段的值,然后尝试提交表单,但在表单提交后,隐藏字段的值被重置 HTML代码Javascript 提交表单后未设置值,javascript,php,Javascript,Php,我正在尝试将用户的签入值插入数据库。为此,我调用函数并设置隐藏字段的值,然后尝试提交表单,但在表单提交后,隐藏字段的值被重置 HTML代码 <form name="checkinout" action="logindetails.php" method="post" enctype="multipart/form-data" id="checkinout"> <table class="login-detaills" width="100%"><thead>&
<form name="checkinout" action="logindetails.php" method="post" enctype="multipart/form-data" id="checkinout">
<table class="login-detaills" width="100%"><thead><th></th><th>Check In</th><th>Check Out</th><th>Hours</th></thead>
<tr><td></td><td></td><td></td><td></td></tr>
</table>
</fieldset>
<table>
<tr><td><input type="button" onClick="call()" value="checkin"></button></td><td><input type="button" id="logout" onclick="call2();" value="Check Out" ></td></tr>
<tr><td><input type="hidden" id="checkin" name="checkin"></td><td><input type="hidden" id="checkout" name="checkout"></td></tr>
</table>
</form>
PHP代码
if(isset($_POST['checkinout']) ){
if(isset($_POST['checkin']) && $_POST['checkin']=='checkin'){
$sql = "INSERT INTO attend (loginout,log_type,fk_userid) VALUES ('".TODAY_DATETIME."','I','".$_SEESION['user_id']."')";
}elseif(isset($_POST['checkout']) && $_POST['checkout']=='checkout'){
$sql = "INSERT INTO attend (loginout,log_type,fk_userid) VALUES ('".TODAY_DATETIME."','O','".$_SEESION['user_id']."')";
}
$stmt = $class->dbh->prepare($sql);
$stmt->execute();
$res = $stmt->fetch(PDO::FETCH_ASSOC);
}
首先,如果(isset($\u POST['checkinout'])
没有名称
属性,它就不能满足要求,因此即使您给它一个值,它也不会是一个成功的控件,也不会被提交
如果您想填充
$\u POST['checkout']
,您需要一个元素,该元素带有name=“checkout”您的代码中没有定义name
属性。要使用$\u POST['checkout']
您必须具有
看起来您正在检查POST值是否为$\u POST['checkinout']
已设置,但我在任何地方都看不到该表单控件。我看到的唯一控件是:
<input type="button" onClick="call()" value="checkin"></button>
<input type="button" id="logout" onclick="call2();" value="Check Out" >
<input type="hidden" id="checkin" >
<input type="hidden" id="checkout">
正如@Quentin所说,它们没有name属性,因此在任何情况下提交后都不会出现在$\u POST
数组中,因此这是另一件必须解决的问题
我认为您很可能假设,由于表单id是checkinout
,索引$\u POST['checkinout']
将在表单提交时设置。情况并非如此;只有表单控件(输入、选择、复选框、按钮等)将在<代码> $*POST < />代码中填充数据,并且在代码< > $POST 数组中的密钥将被设置为窗体控件的name属性的值。 您确实应该考虑使用“来自”的两个提交按钮,看看这个,并删除隐藏的输入和所有不必要的JS代码您是否有WAKE?d浏览器开发工具中的请求/响应?是否有任何错误?call()函数应如下所示:function call(){$('#checkin').val(“checkin”);$('#checkinout').submit()}将名称属性添加到输入中,以便可以用.POST获得它们,应该考虑删除隐藏的输入并使用表单中的两个提交按钮来查看
<input type="button" onClick="call()" value="checkin"></button>
<input type="button" id="logout" onclick="call2();" value="Check Out" >
<input type="hidden" id="checkin" >
<input type="hidden" id="checkout">