jQuery ajax删除脚本实际上没有删除

时间:2010-05-28 12:59:12

标签: php jquery ajax delete-row sql-delete

我正在处理一些个人网络应用程序。我有一个链接,当被点击时,应该对一个应该从数据库中删除该信息的php进行ajax调用。由于某些未知原因,它实际上不会从数据库中删除该行。我已经尝试过我所知道的一切,但仍然没有。我确信它非常简单......以下是涉及的脚本。

数据库输出:

 $sql = "SELECT * FROM bookmark_app";
    foreach ($dbh->query($sql) as $row)
 {
 echo '<div class="box" id="',$row['id'],'"><img src="images/avatar.jpg" width="75" height="75" border="0" class="avatar"/>
     <div class="text"><a href="',$row['url'],'">',$row['title'],'</a><br/>
     </div>
            /*** Click to delete ***/
     <a href="?delete=',$row['id'],'" class="delete">x</a></div>
  <div class="clear"></div>';
        }

    $dbh = null;

Ajax脚本:

$(document).ready(function() {
$("a.delete").click(function(){

 var element = $(this);

 var noteid = element.attr("id");

 var info = 'id=' + noteid;

  $.ajax({
    type: "GET",
    url: "includes/delete.php",
    data: info,
    success: function(){
    element.parent().eq(0).fadeOut("slow");
    }
  });
 return false;
 });
});

删除代码:

include('connect.php');

//delete.php?id=IdOfPost
if($_GET['id']){

$id = $_GET['id'];

//Delete the record of the post
$delete = mysql_query("DELETE FROM `db` WHERE `id` = '$id'");

//Redirect the user
header("Location:xxxx.php");

}

2 个答案:

答案 0 :(得分:3)

啊刚发现你的错误,你在生成的href中没有设置id属性。它应该是这样的:

<a href="..." id="'. $row['id'] . '" class="delete">x</a>

当然这只是一个直接的例子,你必须逃避这些事情,但这应该让你在jQuery中访问该项目。

答案 1 :(得分:0)

您可能希望修改删除脚本,而不仅仅是在数据库查询后重定向。因为它是通过AJAX调用的,所以至少要将成功/错误代码返回给javascript:

// can't return $delete unconditionally, since *_query() returns an object
if ($delete) { 
   return(json_encode(array('code' => 1, 'msg' => 'Delete succeeded')));
} else {
   return(json_encode(array('code' => 0, 'msg' => 'Delete failed: ' . mysql_error()));
}

假设数据库调用成功是不好的做法。