4

我有一个带有 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 函数;谢谢

4

6 回答 6

11

尝试这个

$.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'];
于 2013-11-01T09:56:26.957 回答
4

你的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";
}
?>
于 2013-11-01T09:56:20.237 回答
4

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

$(document).on('click', '.trash', function() { ... });
于 2013-11-01T09:57:33.860 回答
2

尝试这个:

$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")
                            }
                    }

                })
            });
  • 谢谢
于 2013-11-01T10:00:16.657 回答
2

以下是您需要纠正的事情

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

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

  • 更改为您的 ajax 请求

    data: {'del_id':del_id},

希望这可以帮助。

于 2013-11-01T10:09:11.010 回答
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";
   }
 ?>
于 2013-11-01T09:58:03.187 回答