【问题标题】:cant delete record from database using $.ajax() function无法使用 $.ajax() 函数从数据库中删除记录
【发布时间】:2014-03-01 10:33:09
【问题描述】:

我有记录列表。我的每条记录都有删除按钮,我正在使用$.ajax() 功能删除记录。但是当我单击删除按钮时,它不会从数据库中删除记录,并且当我警告数据时,它会输出整个 html 页面。下面是代码。请帮帮我。

html代码

<tbody>
      <tr class="gradeX odd">
        <td class="sorting_1">2</td>
        <td class=" ">test</td>
        <td class=" ">test</td>
        <td class="center ">0</td>
        <td class="center ">Active</td>
        <td class=" "><button type="button" class="btn btn-default btn-circle" name="editRecord"><i class="fa fa-pencil-square-o"></i></button>
          <button type="button" class="btn btn-danger btn-default btn-circle" id="2" name="deleteRecord"><i class="fa fa-times"></i></button></td>
      </tr>
      <tr class="gradeX even">
        <td class="sorting_1">3</td>
        <td class=" ">sarees</td>
        <td class=" ">contains sarres</td>
        <td cl="center ">1</td>
        <td class="center ">Active</td>
        <td class=" "><button type="button" class="btn btn-default btn-circle" name="editRecord"><i class="fa fa-pencil-square-o"></i></button>
          <button type="button" class="btn btn-danger btn-default btn-circle" id="3" name="deleteRecord"><i class="fa fa-times"></i></button></td>
      </tr>

    </tbody>

jquery

$(document.body).on('click', '[name="deleteRecord"]', function(){
     var id= $(this).attr('id');
     var parent = $(this).parent().parent();
      if (confirm("Are you sure you want to delete this row?"))
        {
         $.ajax({
                   type: "GET",
                   url: "admin_operation.php?mode=delete_category&id="+id,
                   cache: false,

                   success: function(data)
                   { 
                    alert(data);
                    parent.fadeOut('slow', function() {$(this).remove();});
                   }
             });
        }
   });

php 代码

 $mode = $_GET['mode'];

 if($mode!='add_category' || $_GET['mode']!= "delete_category")
 {
     header('location:dashboard.php');
     die;

  }


    if($mode=='delete_category')
    {    

       $id=$_GET['id'];
       $q=$db->query("DELETE FROM db_category WHERE category_id='".$id."'");
       if($q){ echo "yes";}
       else{ echo "no";}

    }

【问题讨论】:

  • 你在这里做的事情真的很危险。首先,任何人都可以通过该 URL 删除内容,其次,您对 SQL 注入持开放态度。
  • @marty 但使用 post 方法,我得到了同样的错误。我该怎么办?
  • POST 不会阻止这两件事。
  • 让我们忽略这个脚本非常危险的事实,我认为问题在于它正在寻找一个字符串 category_id (category_id='".$id."') 而它应该寻找一个整数(category_id=".$id.")。
  • @user3288891,不确定是什么错误,但是,为了保护 - 在查询之前,在 .php 文件的开头,检查 admin 是否已登录,并在插入之前检查 var id在查询中。

标签: php jquery


【解决方案1】:

您在 javascript 中发送 'url: "admin_operation.php?mode=delete_category&id="+id,'。 而且,在 php 脚本中,您有一个条件是重写标头并退出脚本。

if($mode!='add_category' || $_GET['mode']!= "**delete_category**")
{
    header('location:dashboard.php');
    die;
}

下一段代码

if($mode=='delete_category')
{
    // ...
}   

永远不会到达。 希望这对您有所帮助。

【讨论】:

  • tnx.. 它应该是 && 而不是 || if($mode!='add_category' &&| $_GET['mode']!= "delete_category")
猜你喜欢
  • 2018-03-16
  • 1970-01-01
  • 2010-11-18
  • 2013-10-13
  • 2014-11-23
  • 2012-10-19
  • 2023-04-06
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多