在jquery发布成功后运行for循环

时间:2013-06-06 08:15:49

标签: php jquery

我发布了一个数字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();
?>

但是我无法在成功时删除行。

2 个答案:

答案 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直接放在查询字符串中是完全不安全的。