使用AJAX和PHP从表中删除数据

时间:2018-08-03 06:59:37

标签: php ajax

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

感谢您的回复。 (语言很抱歉)

Index.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();
            }
        });
    }
});

delete.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;

4 个答案:

答案 0 :(得分:1)

让我们逐步调试此代码:

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

您看到自己的ID吗?

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

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

您看到自己的ID吗? 如果是的话,那么您没有向我们展示的代码可以执行任何擦除数据或进行某些操作的^^

如果没有,我们来看一下javascript: 仍在Inspector中,打开“源”面板,找到您的index.php,更确切地说是您发送给我们的代码。 Sources 只需在行号var id = ...之后添加一个标记即可。 再次触发您的ajax请求。您将可以看到id的值。 该值正确吗?如果是的话……好孩子,我们必须继续努力!

如果没有(它是“ undefined”或“ null”),那么这就是浏览器不发送它的原因! 在这种情况下,您必须检查$row['id_suciastka']的值,例如在index.php循环开始时使用var_dump($row);

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

希望有帮助! :)

答案 1 :(得分:0)

我认为您的按钮不在DOM中 您可以尝试:

$(document).on('click', '.btn_delete', function() {})

答案 2 :(得分:0)

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

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

在ajax请求中用方法替换类型。

答案 3 :(得分:-1)

首先,可以先发送console.log id,然后再发送发帖请求,因此请尝试

$('.btn_delete').on('click', function(){
            var id = $(this).data("id3");
            console.log(id); // <-- log ID here  
            if (confirm('Naozaj zmazat ?')) 
            {
                $.ajax({
                    url: 'delete.php',
                    type: 'POST',
                    data: {delete:1, id:id},
                    success: function(data){
                        alert(data);
                        fetch_data();
                    }
                });
            }
        });

如果在那里找到了某些东西,请在Chrome或Firefox中以及在开发工具中按F12键,转到“网络”标签并检查对PHP的http请求,然后在“标题”标签中检查请求的“表单数据”部分(http的正文请求)。 如果您获得ID并在那里删除属性,则您的JS是正确的,应该在PHP中寻找错误。

最好的开始方法是整个var_dump整个$_POST数组。因此:

var_dump($_POST);

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";
    }
}