【问题标题】:delete row with ajax function and php使用ajax函数和php删除行
【发布时间】:2013-11-12 12:19:21
【问题描述】:

我有一个带有 mysql 数据的表,我添加了一个垃圾按钮,我想在使用 ajax 函数单击垃圾按钮时删除每一行, 这是我的html:

  <table border="1">
    <?php
$sql ="SELECT * FROM music";
$result = mysql_query($sql) or die(mysql_error());

while($row = mysql_fetch_object($result)){

    echo '<tr><td>'.$row->file_name.'</td><td>'.$row->composer.'</td><td>'.$row->lyric.'</td><td>'.$row->music_thumb.'</td><td>'.'

    <a href="#" id="'.$row->msuic_id.'" class="trash" >
    جذف کردن
    </a>

    '.'</td></tr>';
    }

?>
  </table>

还有我的 ajax 函数:

$(function(){
        $('.trash').click(function(){
            var del_id= $(this).attr('id');
            var $ele = $(this).parent().parent();
            $.ajax({
                type:'POST',
                url:'delete.php',
                data:del_id,
                success: function(data){
                    if(data=="YES"){
                        $ele.fadeOut().remove();
                        }else{
                            alert("can't delete the row")
                            }
                    }

                })
            })
    });

还有我的“delete.php”页面:

<?php
include('../db_inc.php');
$music_number = "POST['del_id']";
echo '$music_number';
$qry = "DELETE FROM music WHERE msuic_id ='$music_number'";
$result=mysql_query($qry);

?>

我认为我的问题是 ajax 函数; 谢谢

【问题讨论】:

  • 检查浏览器控制台中的任何错误..
  • 更改为 $music_number = $_POST['del_id'];
  • 问题不止一个,所有的解决方案都已经给出了:):1°将"POST['del_id']"替换为$_POST['del_id'],2°将data:del_id替换为data:{del_id:del_id}(注意第一个是一个参数名称,第二个是变量)。您应该考虑使用 mysqli_* 而不是 mysql_ 已弃用的函数

标签: php jquery mysql ajax


【解决方案1】:

将数据作为对象发送给您,而不仅仅是价值

 ...
 type:'POST',
 url:'delete.php', 
 data:{'del_id':del_id},  //<----here
 ....

并将其作为 POST 在 delete.php 中

 $music_number = $_POST['del_id'];

更新

将此添加到您的 delete.php

<?php
 include('../db_inc.php');
 $music_number = $_POST['del_id'];
  $qry = "DELETE FROM music WHERE msuic_id ='$music_number'";
  $result=mysql_query($qry);
  if($result) {
      echo "Yes";
   } else {
      echo "No";
   }
 ?>

【讨论】:

  • 谢谢,您的代码可以正常工作,但每次我点击垃圾箱时,都会显示警报:“无法删除该行”,但是当我重新加载页面时,我看到该行已被删除,这是什么问题?
  • 我收到错误通知:未定义索引:php 行上的 del_id :$music_number = "POST['del_id']";
【解决方案2】:

你的 ajax 代码应该是这样的:

$(function(){
    $(document).on('click','.trash',function(){
        var del_id= $(this).attr('id');
        var $ele = $(this).parent().parent();
        $.ajax({
            type:'POST',
            url:'delete.php',
            data:{'del_id':del_id},
            success: function(data){
                 if(data=="YES"){
                    $ele.fadeOut().remove();
                 }else{
                        alert("can't delete the row")
                 }
             }

            });
        });
});

PHP 代码应该是:

<?php
include('../db_inc.php');
$music_number = $_POST['del_id'];
//echo $music_number;
$qry = "DELETE FROM music WHERE msuic_id ='$music_number'";
$result=mysql_query($qry);
if(isset($result)) {
   echo "YES";
} else {
   echo "NO";
}
?>

【讨论】:

  • 谢谢,您的代码可以正常工作,但每次我点击垃圾箱时,都会显示警报:“无法删除该行”,但是当我重新加载页面时,我看到该行已被删除,这是什么问题?
  • @Radian 我已经更新了代码。检查一下。这是因为您正在检查值 YES 并且在 php 文件中它是 yes。所以我更新了答案。如果这有帮助,请将其标记为已接受。
  • 哦,我找到了问题,我应该将“YES”更改为 if(data==del_id+"YES"),非常感谢,请更新您的代码 :)
  • @Radian 您使用了哪个代码。使用 PHP 代码。并在成功功能中尝试检查即将发生的事情。 alert(data);.
  • 我检查并提醒 = 18YES ---> 18 指的是行 ID,我只是复制并粘贴您的代码,
【解决方案3】:

以下是你需要纠正的地方

  • 在“delete.php”文件中 $music_number = "POST['del_id']"; // to $music_number = $_POST['del_id'];

    此外,在 ajax 的成功回调中,您正在检查响应中的“YES”,该响应未在此文件中的任何位置发送。

  • 更改为您的 ajax 请求

    data: {'del_id':del_id},

希望这会有所帮助。

【讨论】:

    【解决方案4】:

    试试这个:

    $music_number = POST['del_id']; in delete.php
    
    write ajax function like:
    
    $.ajax({
                    type:'POST',
                    url:'delete.php',
                    data:del_id,
                    success: function(data){
                        if(data=="YES"){
                            $ele.fadeOut().remove();
                            }else{
                                alert("can't delete the row")
                                }
                        }
    
                    })
                });
    
    • 谢谢

    【讨论】:

      【解决方案5】:

      除了上述答案之外,您还应该委派您的点击处理程序以防止不必要的重复

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

      【讨论】:

        【解决方案6】:

        试试这个

        $.ajax({
            type:'POST',
            url:'delete.php',
            data:{del_id:del_id},
            success: function(data){
                 if(data=="YES"){
                     $ele.fadeOut().remove();
                 }else{
                     alert("can't delete the row")
                 }
            }
        
             })
        })
        

        也要改变

        $music_number = "POST['del_id']";
        

        到

        $music_number = $_POST['del_id'];
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-03-17
          • 2015-05-27
          • 1970-01-01
          • 1970-01-01
          • 2021-04-05
          • 1970-01-01
          • 2016-10-24
          • 2017-03-29
          相关资源
          最近更新 更多