jquery post成功后运行for循环


Running a for loop after jquery post success

我张贴了一个列表的数字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();
?>

但是我不能删除成功的行

由于行已经在数组arr中,它在成功函数的作用域中,因此您可以简单地尝试

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

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

for (var row_id in data.split(',')) {
    // remove
}

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

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