对于已经在SO上多次询问过的问题发表的道歉,但是我已经经历了很多这样的问题,但仍然无法解决我自己的问题。
我有一个索引页面,'index.php'带有一个JQuery脚本,用于在同一目录中将ID号发布到'delete.php'。然后'delete.php'应该从MySQL数据库中删除与该ID号匹配的行。 'index.php'还应该从HTML中删除已删除的项目。
最后一点,从HTML中删除项目,但是,虽然我在错误控制台中得到“200 OK”响应,但'delete.php'什么也没做 - 我已经检查了echo语句而没有运行。
CODE 的index.php:
<!DOCTYPE html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"> </script>
<script>
jQuery(document).ready(function(){
$(".deleteitem").click(function(){
var parent = $(this).closest('tr');
var id = parent.attr('id');
$.ajax({
type: "POST",
URL: "delete.php",
data: "id=" +id,
success: function(data){
$('#'+id).remove();
}
});
});
});
</script>
</head>
<body>
<table>
<tr id="1">
<td>Milk</td>
<td>3.99</td>
<td><button class="deleteitem"><img src="deletebutton.gif"></button></td>
</tr>
<tr id="2">
<td>Bread</td>
<td>1.99</td>
<td><button class="deleteitem"><img src="deletebutton.gif"></button></td>
</tr>
</table>
</body>
</html>
delete.php:
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("tryit") or die(mysql_error());
$id = $_POST[id];
echo "DELETE.PHP HAS RUN<br>";
echo "ID = $id";
if (isset($id)) {
$query = "DELETE FROM tryit WHERE id = '$id'";
mysql_query($query) or die('Error, query failed');
}
?>
任何关于为什么这不太合理的线索 - 这是我的坚果!
答案 0 :(得分:1)
在PHP脚本中,您需要$_POST[id]
而不是$_POST['id']
。
对于数据,jQuery需要一个对象或一个查询字符串。你正在传递一个查询字符串,所以应该没问题。
答案 1 :(得分:0)
尝试
$.ajax({
type: "POST",
url: "delete.php",
data: {id: id},
success: function(data){
$('#'+id).remove();
}
});
url 应为小写!
答案 2 :(得分:0)
解决:
问题不在于jquery(除了'url:'的区分大小写,这是一个错字)。
问题出在sql查询中。我有
$sql = "DELETE * FROM tryit WHERE id = '$id'";
当然它应该是
$sql = "DELETE FROM tryit WHERE id = '$id'";
(没有*)。