1

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

这是我的查看代码用户名

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


 }
4

3 回答 3

1

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

$this.parent('td').parent('tr').remove();
于 2013-01-19T08:18:35.133 回答
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/


另外:不要使用get删除东西!改用帖子!您还应该考虑跨站点请求伪造:完全不同站点上的某人可能会添加链接

<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

于 2013-01-19T08:19:46.507 回答
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"]);        
于 2013-01-19T08:16:13.870 回答