$ .ajax()函数返回整个页面,并且不能从数据库中删除行

时间:2014-02-28 11:02:12

标签: php jquery ajax

我想使用ajax从记录中删除一行但不能删除行,$.ajax()函数返回整个页面而不是删除行。

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');

     if(confirm('Are you sure ?')){
     $.ajax({
      type:'POST',
      url:'admin_operation.php?mode=delete_category',
      data: {id:id},
      success:function(data) {
        alert(data);
      }
  });
 }
});

Php代码

 if($mode=='delete_category')
    {
       $id=$_POST['id'];

       $q=$db->query("DELETE FROM db_category WHERE category_id='".$id."'");
        if($q) {
                echo "YES";
              }
              else 
              {
                echo "NO";
              }
    }

3 个答案:

答案 0 :(得分:1)

if($ _ GET ['mode']。=='delete_category')//查询字符串中的变量被视为$ _GET     {        $ ID = $ _ POST [ 'ID'];

   $q=$db->query("DELETE FROM db_category WHERE category_id='".$id."'");
    if($q) {
            echo "YES";
          }
          else 
          {
            echo "NO";
          }
}

并且当您在警报响应时回显“是”或“否”,您将仅获得该回复 如果你想在删除前删除行存储并回显那个..

答案 1 :(得分:0)

$mode应为$_GET['mode']

或者,将url:'admin_operation.php?mode=delete_category',更改为url:'admin_operation.php',并将data: {id:id},更改为data: {id:id, mode:'delete_category'},并设置$mode = $_POST['mode']

如果这不起作用,那么您可能已经回显了该页面的内容。我们需要在文件其余部分的上下文中查看代码,以确定您是否已经回显到页面的内容。此外,正如其他人所指出的那样,你应该在if块的末尾或每次回显之后exit;,以避免从文件的后面返回代码。

答案 2 :(得分:0)

首先,您需要在dataType方法中设置$.ajax

  $.ajax({
      type:'POST',
      url:'admin_operation.php?mode=delete_category',
      data: {id:id},
      dataType: 'json', // <-----
      success:function(data) {
        console.log(data); // should be something like {'status' : 'YES'}
      }
  });

在您的PHP代码中,您需要在exit

之后使用echo语句
if($mode=='delete_category')
{
  $id = $_POST['id'];
  $q=$db->query("DELETE FROM db_category WHERE category_id='".$id."'");
  $output = array('status' => 'NO');
  if($q) {
    $output['status'] = 'YES';
  }
  echo json_encode($output);
  exit;
}