我发布了一个数字ID列表到我的php脚本中进行删除
$("#delete").click(function(){
var arr = $(':checkbox:checked').closest('tr').map(function(i, e) {
return +e.id;
}).get();
var checkedArr = arr.join(',');
$.post('delete.php', {thearray: checkedArr }, function(data) {
for(var row_id in data) {
$("#"+data[row_id]).remove();
}
});
});
然后返回我刚刚发布的ID
$.post('delete.php', {thearray: checkedArr }, function(data) {
for(var row_id in data) {
$("#"+data[row_id]).remove();
}
});
如何运行for循环以便我可以删除行?。
<?php
$mysqli = new mysqli("localhost", "root", "", "caliban");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$incoming = $_POST['thearray'];
$query="DELETE FROM caliban where id in ($incoming)";
$mysqli->query($query);
echo $incoming;
$mysqli->close();
?>
但是我无法在成功时删除行。
答案 0 :(得分:1)
由于行已经在数组arr
中,这位于成功函数的范围内,您只需尝试
for (var row_id in arr) {
// remove
}
或者,如果您想确保删除服务器发回的ID,您可以尝试
for (var row_id in data.split(',')) {
// remove
}
答案 1 :(得分:1)
这是因为在成功回调中,data
是一个字符串,而不是一个数组。您应该使用包含相同ID但在实际数组中的arr
变量。
此外,您不应该像这样运行您的查询:
1)将数组发送到PHP脚本,而不是字符串。
2)使用PDO库。
3)使用准备好的查询。将$incoming
直接放在查询字符串中是完全不安全的。