使用attr ajax删除记录

时间:2013-07-21 15:39:37

标签: php jquery mysql ajax

我试图通过<li id='{$row['id']}'>删除它有效但无法从mysql删除记录只删除它前端。是否可以通过attr定义ID来删除?这是我目前的代码:

PHP,(可以正常工作并删除多个字段)

$id = (int) $_GET['id'];
$sql = "DELETE FROM img_nav WHERE id = :id";
$sql = "DELETE FROM img_landing WHERE id = :id";
$sql = "DELETE FROM img_slider WHERE id = :id";

$stmt = $db->prepare($sql);
$stmt->bindParam(':id', $_GET['id'], PDO::PARAM_INT);   
$stmt->execute();

我的jQuery / Ajax

jQuery(document).ready(function(){
  $(".deleteitem").click(function(){

    var parent = $(this).closest('li');
    var id = parent.attr('id');

    $.ajax({
      type: "POST",
      data: "id=" +id,
      URL: "delete.php",
      success: function(){
        $('#'+id).remove();
      }
    });
  });
});

HTML标记,我用PHP / PDO回应内容:

<li id='{$row['id']}'>
<div class='imgHover'>
<div class='hover'>
<a href='#' ><img src='../img/delete.png'></a></div><img src='{$row['path']}'>
</div></li>

当直接链接到delete.php时,我没有问题,它工作正常,它只是发送带有ajax的ID,这是问题。可能是MAMP的问题吗?我没有远程测试过。

2 个答案:

答案 0 :(得分:0)

问题在于您如何检索服务器上的数据。

type: "POST"

您在AJAX呼叫中指示的是,但在您执行的服务器上

$id = (int) $_GET['id'];

所以你永远不会捕获帖子。将$_GET[]更改为$_POST[]

注意

只是一个小小的注释,如果你将其转换为(int),并且你发送一个分数/浮点数,它将向0舍入,而不是向上舍入。因此3.57 (int)将为3

答案 1 :(得分:0)

如果你不知道你应该使用$ _GET或$ _POST,你可以使用$ _REQUEST。但是你觉得这个查询有什么问题吗$ sql =“DELETE FROM img_nav WHERE id =:id”;等等?程序知道这是什么吗?你应该尝试$ sql =“DELETE FROM img_nav WHERE id ='{$ id}'”;我认为它有效。