0

我将数字 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();
?>

但是,我无法删除成功的行。

4

2 回答 2

1

这是因为在您的成功回调中,data它是一个字符串,而不是一个数组。您应该使用arr包含相同 ID 但在实际数组中的变量。

此外,您不应该像这样运行您的查询: 1) 向您的 PHP 脚本发送一个数组,而不是一个字符串。2)使用PDO库。3) 使用准备好的查询。$incoming直接放入查询字符串是不安全的。

于 2013-06-06T08:29:44.000 回答
1

由于行已经在数组arr中,这在你的成功函数范围内,你可以简单地尝试

for (var row_id in arr) {
    // remove
}

或者,如果您想确保删除服务器发回的 ID,您可以尝试

for (var row_id in data.split(',')) {
    // remove
}
于 2013-06-06T08:27:36.177 回答