【发布时间】:2017-07-15 10:15:59
【问题描述】:
我正在尝试获取所有选中的复选框值并使用 AJAX 将它们解析为我的 php 函数。
我使用 foreach 来尝试获取选中复选框的每个 id。
我的问题是,当我尝试更新数据库时,它不会返回“1”,我会在成功时回显。
当我取出我的 foreach 代码时,它可以工作。
我的删除按钮是:
<form class="form -dark" id="form-inline" method="POST">
<div class="btn-group">
<button type="button" onclick="deleteSelectedTokens()" class="btn -dark" style="margin-left: 5px;" title="Delete all selected tokens"><i class="fa fa-trash"> </i></a>
</div>
</form>
我的复选框 html/php 代码是:
<table class="table -dark -striped">
<thead>
<tr>
<th style="text-align: center;"><input type="checkbox" id="selectall"/></th>
<th style="text-align: center;">Token</th>
<th style="text-align: center;">Date/Time Generated</th>
<th style="text-align: center;">Status</th>
<th style="text-align: center;">Durbaility</th>
</tr>
</thead>
<tbody>
<tr>
<?php
$username = $_SESSION['username'];
$token_result = mysqli_query($con, "SELECT id, token, used, time_generated, durability FROM tokens WHERE user_id = '$username' ORDER BY used");
if(mysqli_num_rows($token_result) > 0) {
while($token_row = mysqli_fetch_array($token_result)) {
$result = array($token_row['durability']); $sub_struct_month = ($result[0] / 30) ; $sub_struct_month = floor($sub_struct_month); $sub_struct_days = ($result[0] % 30); $sub_struct = "<i>".$sub_struct_month."</i> month(s) <i>".$sub_struct_days."</i> day(s)";
echo '
<tr style="text-align: center;">
<td>
<center><input type="checkbox" id="checkedTokens" class="checkbox" value='.($token_row['id']).'></center>
</td>
<td>
'.$token_row['token'].'
</td>
<td>
'.($token_row['time_generated']).'
</td>
<td>
'.($token_row['used'] == "0" ? "<span class='label label-primary'><i class='fa fa-check'></i> Valid </span>" : "<span class='label label-primary'><i class='fa fa-fa fa-times'></i> Used </span>").'
</td>
<td>
'.$sub_struct.'
</td>
';
} }else{ ?>
<tr>
<td colspan="12" style="padding: 30px;">
<div class="alert -dark">
<div class="alert-icon _text-danger">
<i class="fa fa-exclamation-circle"></i>
</div>
No tokens in your account
</div>
</td>
</tr>
<?php } ?>
</tr>
</tbody>
请注意,我需要使用 foreach 来获取每个复选框的值,以便在按下删除按钮时删除选定的复选框。
我的 AJAX 发送到 PHP 函数是:
<script>
function deleteSelectedTokens() {
var selectedTokens = document.getElementById("checkedTokens").value;
$.ajax({
type: "POST",
url: "includes/form_submit.php",
data: {
deleteSelectedTkns: true,
checked_id: selectedTokens
},
success: function(msg){
if(msg == 1) {
update_myDays_success();
} else {
general_error_forms();
}
},
});
return false;
}
</script>
我认为问题出在 Javascript...当我获取复选框的值并发布它们时,我认为它只会在 checkedTokens id 中获得 1 个值。
我的 php 接收代码(这不是问题):
$username = $_SESSION['username'];
$selectedTokens = mysqli_real_escape_string($con, $_POST['checked_id']);
foreach($selectedTokens as $id) {
$doUpdateDelete = 'DELETE FROM tokens WHERE id = "'.$id.'" AND user_id = "'.$username.'"';
$result = $con->query($doUpdateDelete) or die("Error");
if($result)
{
echo '1';
}
else
{
echo 'Failed';
}
}
我的 console.log 没有错误。就像我说的那样,我认为这是获取复选框值的 javascript 代码并没有获取所有值。
【问题讨论】:
-
您将 id 重复到多个复选框,这不是您获取所有复选框值的方式,请具体说明您的
ids,即它们不应该对所有元素都相同。跨度> -
@FarrukhAyyaz 不,我使用数据库中每一行的 ID 作为每个文本框的值。
-
在您的代码中,复选框 ID、您在 javascript 中的分配和使用与每个复选框相同。它不是您的表格 ID。
标签: javascript php jquery