Javascript 提交表单后未设置值

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>&

我正在尝试将用户的签入值插入数据库。为此,我调用函数并设置隐藏字段的值,然后尝试提交表单,但在表单提交后,隐藏字段的值被重置

HTML代码

<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">