我正在处理一些个人网络应用程序。我有一个链接,当被点击时,应该对一个应该从数据库中删除该信息的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");
}
答案 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()));
}
假设数据库调用成功是不好的做法。