【发布时间】:2020-04-18 12:58:04
【问题描述】:
我有一个 foreach 循环,它在复选框和一些输入字段中创建tr's。
每行都有一个以 id 为值的复选框。
每行还有一个隐藏的输入字段,以 id 为值。
我想区分请求是通过每行中自己的delete 按钮发送的,还是通过复选框发送的(这些)行。 (当多个复选框被选中时,我可以一次将它们全部删除)
<tr>
<input type="hidden" name="file_id" value="<?php echo $file_id; ?>" /> <!-- file id which belongs to each row -->
<td><input type="checkbox" class="checkbox" value="<?php echo $file_id; ?>" /></td>
...
<button class="btn btn-sm btn-danger submit" type="submit" name="delete_file">Delete</button>
</tr>
我通过 jquery ajax 将数据发送到 php 文件:
// checkboxes value
$(document).on('click' , '.submit' , function() {
var checkbox_value = [];
var file_id = $(this).closest("tr").find("input[name='file_id']").val();
$('.checkbox').each(function() {
if ($(this).is(":checked")) {
checkbox_value.push($(this).val());
}
});
checkbox_value = checkbox_value.toString();
$.ajax({
url: "admin.php",
method: "POST",
data: {
checkbox_value: checkbox_value,
file_id : file_id
},
success: function(data) {
$('.result').html(data);
}
});
});
php:
if(isset($_POST["checkbox_value"])) {
$checkboxfiles[] = $_POST["checkbox_value"];
$category = $_POST["category"];
// checkbox loop
foreach ($checkboxfiles as $checkboxfile) {
foreach(explode(',', $checkboxfile) as $id) {
echo $id.'<br />';
echo 'delete via checkbox is choosen';
}
}
exit;
}
if(isset($_POST["file_id"])) {
...
echo 'delete via single row is choosen';
}
问题:
当我选择通过单行删除时(没有选中复选框),它仍然会发送 echo delete via checkbox is choosen
【问题讨论】:
-
你能试试
var_dump($_POST)吗?
标签: php jquery ajax checkbox checked