【发布时间】:2021-11-11 22:09:18
【问题描述】:
我有一个带有复选框删除所有选项的表单,它可以很好地删除项目,但无法从 ajax 响应的表中删除已删除的项目。
如何从 ajax 响应的表中删除已删除的多个 id?
我已经搜索了所有网站,但没有真正的解决方案,我尝试了here 等中的所有最佳答案,但没有一个是正确答案。
注意:我可以用$("#"+id).closest('tr').remove(); 删除一个已删除的行,但不能删除多个。
我找到的最佳解决方案是location.reload();page,但如果重新加载页面,则不需要 ajax。
这是我的 ajax:
$(document).on('click','[data-bs-target="#deleteAll"]',function(event){
event.preventDefault();
var del = new Array();
$("input[name='del[]']:checked").each(function(){
del.push($(this).val());
});
var valid = false;
if(confirm("Are you sure want to delete this User ? ")){
$.ajax({
url:"modules/mod_users.php",
method:"POST",
data:{del:del},
dataType:"JSON",
success:function(data){
location.reload();
valid = true;
}
});
} else {
return null;
}
});
还有 php 部分:
if(isset($_POST['del'])) {
$error = '';
$deleteAll = implode(', ', $_POST['del']);
$stmt = $pdo->prepare('SELECT * FROM users WHERE user_id IN (' . $deleteAll . ')');
$stmt->execute();
while ($row = $stmt->fetch()) {
@unlink('../images/avatars/' . $row["img"]);
}
$stmt = $pdo->prepare('DELETE FROM users WHERE user_id IN (' . $deleteAll . ')');
$stmt->execute();
if ($stmt) {
$error .= "Deleted.";
}else{
$error .= "Opps something went wrong.";
}
echo json_encode($error);
}
【问题讨论】: