MySQL没有在Ajax调用上删除一行

时间:2013-02-06 06:19:53

标签: php mysql jquery

我的删除按钮:

$('#taglist li #delete').bind('click', function(){
        pic_id = $(this).parent().attr("rel");
        $.post('savetag.php', {"type":"remove", pic_id:pic_id}, function(data){
            viewtag();
          });
    });

savetag.php

if ($_POST['type'] == "remove")
{
    $pic_id = $_POST['pic_id'];

    $sql = "DELETE FROM image_tag WHERE `pic_id` = $pic_id";
    mysql_query($sql);
}

以下是查看标记的脚本,viewtag.php:

$sql = "SELECT * FROM image_tag ORDER BY `pic_id`";
$qry = mysql_query($sql);
$rs = mysql_fetch_array($qry);

if ($rs){
  do{
    echo '<li rel="'.$rs['pic_id'].'"><a>'.$rs['name'].'</a> <a class = "delete">Delete</a></li>';
  }while($rs = mysql_fetch_array($qry));
}

这是允许viewtag.php进入我的index.php的函数:

viewtag();

    function viewtag()
    {
     $.post('viewtag.php', function(data){
            $('#taglist ol').html(data);
          });
    }

那么问题是什么,为什么不删除表?锚标记也不起作用(从viewtag.php回显的锚标记)。问题是什么? 感谢。

2 个答案:

答案 0 :(得分:1)

我能看到的是......您的<a>代码无效,因为代码是动态添加的,因此您需要使用on委托事件...并注意您的<a>已经一个类但你的选择器是id ..使用.delete作为选择器

$('#taglist').on('click','a.delete', function(){  //u can use #taglist li a.delete too
    pic_id = $(this).parent().attr("rel");
    $.post('savetag.php', {"type":"remove", pic_id:pic_id}, function(data){
        viewtag();
      });
});

如果您想了解有关活动的更多信息,可以浏览link

答案 1 :(得分:0)

首先,您要选择ID,但是您有一个班级:

$('#taglist li #delete')。

应该是:

$('.delete').bind('click', function(e){
        pic_id = $(this).parent('li').attr("rel");
        $.post('savetag.php', {"type":"remove", pic_id:pic_id}, function(data){
            viewtag();
          });
 e.preventDefault();
});

您的链接无效,因为它们没有href标记,那么浏览器如何知道正确的锚点?

  <?php while($rs = mysql_fetch_array($qry)): ?>
     <li rel="<?php echo $rs['pic_id'];?>"><a href="#<?php echo $rs['name'];?>"><?php echo $rs['name'];?></a> <a class="delete" href="#">Delete</a></li>
  <?php endwhile;?>

另外,我怀疑他的viewtag()函数也存在问题,但你没有发布相关的html,所以我对此无能为力