在没有页面刷新的情况下删除jquery中的行

时间:2013-01-19 08:02:42

标签: php javascript jquery ajax codeigniter

我正在使用此代码删除一行..我的代码工作正常我正在使用数据表,其中每一行都有一个按钮删除在他们面前..我想要的是当出现确认对话框和用户按确定然后它删除行并显示数据中的剩余行而不刷新..我的意思是在那个时候,如果我按下确定按钮它成功删除行..但删除行保留在表中,直到我刷新页面然后它从表中删除..这可能吗?..因为我不希望用户按下删除后必须刷新以查看该行是否被删除..

这是我的观看代码用户名

         <td> <a href = "employesController/deleteEmploye/<?php echo  $row->emp_id ?>" 
             class = "deletes" >Delete</td>

我的jquery代码

 <script type='text/javascript'>
  $(document).ready(function(){
$(".deletes").click(function(e){
  var r =  confirm("are you sure you want to delete this");

   if (r==true){
    $this  = $(this);
    e.preventDefault();
    var url = $(this).attr("href");
    $.get(url, function(r){
        if(r.success){
            $this.closest("tr").remove();
        }
    })
   }else {
        return false;
       }

    });
     });

我的控制器

 function deleteEmploye($empid){

     $id = $empid;
    $this->load->model('employesModel');
    $query = $this->employesModel->deleteEmploye($id);
    return json_encode(array("success" => true));

模型

  public function deleteEmploye($id){

         $this->db->where('emp_id', $id);
        $query = $this->db->delete('employees');

        return $query->result();


 }

3 个答案:

答案 0 :(得分:1)

使用Firebug(或类似的工具,如果您不使用Firefox)来调试您的ajax调用。在“网络”标签中,您可以看到您的ajaxrequest是否真的被发送,以及它返回的内容。

将console.log和console.dir语句添加到代码中以查明发生的情况:

$.get(url, function(r){
    console.log("returned form ajax");
    if(r.success){
        console.log("successful, $this is now ");
        console.dir($this);
        $this.closest("tr").remove();
    }
}

这样你会发现,你的ajax确实会返回,但是 没有你期望的结果:它只返回数据, 所以查找r.success总是会失败。

你使用的方法.get只需要两个参数: url,以及仅在成功的情况下调用的函数! 所以你根本不需要if语句:

$.get(url, function(r){
  $this.closest("tr").remove();
}

有关完整的示例,请参阅http://jsfiddle.net/bjelline/8RQQN/


另外:不要使用获取删除内容!请改用发布!您还应该考虑跨站点请求伪造:完全不同的站点上的某个人可能会添加链接

<a href="http://yoursite.com/employesController/deleteEmploye/4">free beer here</a>

欺骗用户删除员工 - 甚至没有注意到!

请参阅https://www.owasp.org/index.php/Cross-Site_Request_Forgery_%28CSRF%29_Prevention_Cheat_Sheet

答案 1 :(得分:0)

您可以使用jquery发送到php中另一个删除此行的脚本,并确认您可以删除该表的这一行

jquery的

$.post("functions.php", { rowId: 1231 },
    function(data) {
        if (data == "ok")
            alert("the row has ben delete");
        else
            alert("the row is not delete");

});

PHP

<?php
    function delete_row(){
        //action to delete row in db
        // when the row has bes delete you can print ok
        echo 'ok';
        //if you have a error  you can print a message that you can managed y jquery
        echo "error 2121123"
    }
    if(isset($_post["rowId"]))
        delete_row($_post["rowId"]);        

答案 2 :(得分:0)

首先,您需要验证是否已调用if条件块。如果它被正确调用,那么试试这个:

$this.parent('td').parent('tr').remove();