为表中的每一行创建mysql删除链接,使用ajax删除并更新表列表


Creating mysql delete link for every row in table, delete it with ajax and update table list

所以我在数据库中有一个表。我有输入字段,并根据输入调用ajax来列出表。

a = $("#a").val();
    $.ajax({
        type: "POST",
        url: "list.php",
        data: {a: a},
        success: function(response){
          $('#b').html(response);
        }
    });
     return false;

和我的列表.php:

$result = $dbc->query("SELECT * FROM table WHERE a = '$a'");
while ($row = $result->fetch_array()) {
$x = $row['ID'];
$y = $row['a'];
$z = $row['b'];
echo $x;
echo " ";
echo $y;
echo " ";
echo  '<input value="';
echo $z;
echo '" type="number" />';
echo '<a href="delete.php?ID=';
echo $x;
echo '"><span class="delete">x</span>';
echo '<br/>';
}

和delete.php:

$ID = $_REQUEST['ID'];
$sql = "DELETE FROM table WHERE ID=" . $ID;    
if($dbc->query($sql) === TRUE) {
echo 'deleted';
} else {
echo "Error deleting record; ". $conn->error;
}
$conn->close();

所以,当我点击表行列表附近的x时,它实际上是通过php删除行。我需要通过ajax来完成。我试过了,但没用。

$('.delete').click( function (e) {
$.ajax({
        type: "POST",
        url: "delete.php",
        data: {x: x, y: y, z: z},
        success: function(response === 'deleted'){
          $.ajax({
        type: "POST",
        url: "list.php",
        data: {a: a},
        success: function(response){
          $('#a').html(response);
        }
     });
     return false;
     });
        }
    });
     return false;
});

所以逻辑是——当我点击x时,它会阻止默认值,并调用delete.php并根据发布的id删除行,成功后再次调用ajax更新列表而不删除行。

提示?

正如评论中所指出的,您的成功函数有一个语法错误:

success: function(response === 'deleted')

当您单击"x"时,如果您的行没有在数据库中删除,那么具有指定信息的行不存在,或者您没有正确发送和检索POST数据。

我注意到,当您向delete.php发送POST请求时,您发送的密钥是"x"、"y"answers"z":data: {x: x, y: y, z: z}。但是,在delete.php中,您正在查找由"ID"标识的请求变量:$ID = $_REQUEST['ID'];。我相信这就是你的问题所在。你应该确保你的钥匙匹配。