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

行はすでに配列arrにあるため、成功関数のスコープ内にあるため、単純に試すことができます

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

または、サーバーが送り返している ID を確実に削除したい場合は、試してみることができます。

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

これは、成功のコールバックdataが配列ではなく文字列であるためです。arr同じ ID を含む変数を実際の配列で使用する必要があります。

さらに、次のようにクエリを実行しないでください。1) 文字列ではなく、配列を PHP スクリプトに送信します。2) PDO ライブラリを使用します。3) 準備されたクエリを使用します。$incomingクエリ文字列に直接入れるのはまったく安全ではありません。

于 2013-06-06T08:29:44.000 に答える