首页 > 解决方案 > 使用 AJAX 和 PHP 从表中删除数据

问题描述

你能解释一下问题出在哪里吗?因为我对此失去了所有希望...插入并加载工作但不删除...当我从删除中删除 if 语句时,它说 id 是未定义的索引。但是为什么当我定义它时它应该是未定义的,var id = $(this).data("id3");我认为问题将出现在 select.php 中的某个按钮。我对 AJAX 缺乏经验,所以我请你帮忙解决这个问题。

感谢您的回复。(对不起语言)

索引.php

$('.btn_delete').on('click', function()
{
    var id = $(this).data("id3");

    if (confirm('Naozaj zmazat ?')) {
        $.ajax({
            url: 'delete.php',
            type: 'POST',
            data: {delete: 1, id: id},
            success: function(data)
            {
                alert(data);
                fetch_data();
            }
        });
    }
});

删除.php

if (isset($_POST['delete'])) {
    include("db.php");

    $id = mysqli_real_escape_string($conn, $_POST['id']);    
    $sql = "DELETE FROM suciastka WHERE id_suciastka = '".$id."'";

    if (mysqli_query($conn, $sql)) {
        echo "Deleted";
    }
}

这是我的 select.php

include("db.php");

$output = "";
$sql = "SELECT * FROM suciastka";
$result = mysqli_query($conn, $sql);

$output .= "
        <div class='table-responsive'>
            <table class='table table-bordered'>
                <tr>
                    <th>ID</th>
                    <th>NAME</th>
                    <th>NUMBER</th>
                    <th>PLACE</th>
                    <th>DESCR</th>
                    <th>ACTION</th>
                </tr>";
if (mysqli_num_rows($result) > 0) {
    while ($row = mysqli_fetch_array($result)) 
    {   
        $output .= "
            <tr>
                <td>".$row['id_suciastka']."</td>
                <td>".$row['name_suciastka']."</td>
                <td>".$row['number_suciastka']."</td>
                <td>".$row['place_suciastka']."</td>
                <td>".$row['descr_suciastka']."</td>
                <td><button type='button' name='delete_btn' data-id3='".$row['id_suciastka']."' class='btn btn-danger btn_delete'>Delete</button></td>
            </tr>";
    }

}

$output .= "</table>
        </div>";

echo $output;

标签: phpajax

解决方案


让我们一步一步调试这段代码:

首先,我们应该检查$_POST您的 PHP 代码中的内容: die(var_dump($_POST));在 delete.php 的顶部。

你看到你的身份证了吗?

如果是,那么...只要确保您输入了正确的索引名称 :) 如果不是,我们必须靠近浏览器:

打开您的代码检查器(在 chrome 上按 Ctrl+Maj+I),进入 Network 面板。当您触发 AJAX 查询时,将出现一个新行!只需点击它,您将在“Headers”部分找到有关请求/响应的所有数据,并在底部找到您发送的数据! 网络

你看到你的身份证了吗?如果是,那么您没有向我们展示的代码会执行任何删除您的数据或其他操作的代码 ^^

如果没有,让我们看一下 javascript: 仍然在 Inspector 中,打开“源”面板并找到您的 index.php,更准确地说是您发送给我们的代码。 只需通过单击行号来源 在您之后添加一个标记。var id = ...再次触发您的 ajax 请求。您将能够看到您的价值id。值是否正确?如果是的话......好吧,男孩,我们必须继续一起挖掘!

如果不是(它是“未定义”或“空”),那么这就是浏览器不发送它的原因!在这种情况下,您必须检查 的值,例如在 index.php 中循环的开头$row['id_suciastka']使用 a 。var_dump($row);

如果似乎没有任何效果,那么我们必须获得有关该问题的更多信息!

希望能帮助到你!:)


推荐阅读