用Ajax将变量发送到PHP文件以从Mysql中删除一行-不工作


Posting a variable to a PHP File with Ajax to delete a row from Mysql - doesn't work

这是我的Ajax函数:

$( document ).ready(function(){
  $("#deletebutton").click(function(){
    var del_id  = $(this).attr('name');
    var answer = confirm ("Are you sure?");
    if (answer)
       $.ajax({
           type: "POST",
           url: "deletescript.php",
           data:'delete_id='+del_id,
                success: function(data)
                {
                   alert("Done!");
                }
           });
   });
});

这里是受影响的按钮:

echo'<input type="button" name="'.$id.'" id="deletebutton" value="delete">'
这是我的PHP脚本,名为 deleetesscript . PHP :
$id = $_POST['delete_id'];
$query = "DELETE from items where id = '$id'";
$result = $mysqli->query($query);

即使我收到"已完成!"作为提醒,我的项目仍然存在。我还用Firebug检查了正确的ID是否成功地发送到deleteescript .php文件。我要做什么?我还在我的数据库上手动测试了SQL-Query,它工作了。搜索了类似的问题,发现了一些,遗憾的是,甚至他们的解决方案也没有帮助。我不知道该怎么办……谢谢你!

打印完整的查询并在数据库管理工具中执行。因此,您可以看到它是哪个查询。

一般来说,我会对你说几件事:

  • 对于删除,发送DELETE请求而不是POST
  • 不要在引号之间放变量
  • 序列化查询参数以防止sql注入

更好的选择和解决方案:

软删除

  • 添加状态字段到您的表
  • 可以有活动状态和非活动状态(已删除)
  • 是否要删除记录?设置状态为非活动
  • 默认读出活动项

尝试jquery $.post:

    $( document ).ready(function(){
  $("#deletebutton").click(function(){
    var del_id  = parseInt($(this).attr('name'));
    var answer = confirm ("Are you sure?");
    if (answer){
        $.post('deletescript.php',{id:del_id}, function(callback){
            if(callback){
                alert("Done!");
            }
        });
    }
   });
});

PHP文件将通过$_POST['id']访问id
回调函数将包含PHP文件将返回/show

的内容。