【问题标题】:Delete records without refreshing PHP/Javascript [closed]删除记录而不刷新 PHP/Javascript [关闭]
【发布时间】:2021-05-28 21:43:45
【问题描述】:

我很想从我的数据库中删除一些记录,但没有转到 delete.php 文件或刷新页面。

我试过这个代码:

lieferant.php

   <td> <?php echo    $row['lieferantID']; ?>  </td>

   <td> <?php echo    $row['lieferantname']; ?>  </td>

   <td> <?php echo    $row['kontakt']; ?>  </td>

   <td> <?php echo    $row['mail']; ?>  </td>

<td>  <button type="button" id="<?php echo $row['lieferantID']; ?>" class="delete-btn">Delete</button></td>


<script type="text/javascript" >
        $(function() {

            $(".delete-btn").click(function() {
                var del_id = $(this).attr("id");
                var info = {"lieferantID": del_id};
                if (confirm("Are you sure?")) {
                    $.ajax({
                        type : "POST",
                        url : "delete.php", //URL to the delete php script
                        data : info,
                        success : function() {
                        }
                    });
                    $(this).parents(".record").animate("fast").animate({
                        opacity : "hide"
                    }, "slow");
                }
                return false;
            });
        });
 </script>

删除.php

$lieferantID=$_POST['lieferantID'];
$delete=mysqli_query($connection,"DELETE FROM 'lieferant' WHERE lieferantID='$lieferantID'");
$result = mysqli_query($delete) or die(mysqli_error());

不幸的是,它不起作用。当我将行的 ID 手动放入查询中时,它将被删除而无需转到 delete.php,但我仍然必须刷新页面才能看到记录已消失,所以我的问题是:

1.如何将'lieferantID'(行的ID)传递给我的delete.php,以便它自动工作 2.页面如何“刷新”自身?

感谢您的帮助:)

【问题讨论】:

  • var del_id = $(this).attr("lieferantID"); 你的按钮是否真的有一个名为lieferantID的属性?
  • 您好,$(this).attr("lieferantID") 应该是 $(this).attr("id")。还要将此type="button" 添加到您的按钮
  • 你有一个错误。 mysqli_error() 需要一个参数。请考虑打开错误模式。 How to get the error message in MySQLi?
  • 错字:'lieferantID' + del_id; 应该是 'lieferantID=' + del_id; 或者更好地将其维护为对象而不是字符串
  • @Swati 我改变了你们所说的一切,但它仍然不起作用:/

标签: javascript php sql mysqli


【解决方案1】:

你应该改变

var del_id = $(this).attr("lieferantID");

var del_id = $(this).attr("id");

因为您在button 元素中使用了id

试试这个

 var info = {lieferantID: del_id};

而不是

var info = 'lieferantID' + del_id;

对于刷新部分,您可以使用它

setInterval('location.reload()', 1000);

内部success
所以最终的代码是这样的:

<script type="text/javascript" >
        $(function() {

            $(".delete-btn").click(function() {
                var del_id = $(this).attr("id");
                var info = {lieferantID: del_id};
                if (confirm("Are you sure?")) {
                    $.ajax({
                        type : "POST",
                        url : "delete.php", //URL to the delete php script
                        data : info,
                        success : function() {
                            setInterval('location.reload()', 1000);
                        }
                    });
                    $(this).parents(".record").animate("fast").animate({
                        opacity : "hide"
                    }, "slow");
                }
                return false;
            });
        });
 </script>

或者您可以在成功响应后隐藏该行而不刷新页面。

【讨论】:

  • 它也不起作用:(
【解决方案2】:

您发送错误的内容来发布请求。使用这个

var info = {"lieferantID": del_id};
    $.ajax({
        type : "POST",
        url : "delete.php",
        data : info,
        dataType: 'json',
        success : function() {
            setInterval('location.reload()', 1000);
        }
    });

【讨论】:

  • 谢谢,但它不起作用:|
  • 你能再试一次吗?
  • 我现在做了,但还是不行..
猜你喜欢
  • 1970-01-01
  • 2022-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多