Jquery从数据库中删除记录但表行不是淡出

时间:2014-02-05 08:22:39

标签: jquery html ajax codeigniter

我在Codeigniter框架中使用此代码,以下代码从数据库中删除记录,但表行未删除或淡出...请检查代码,并告诉我,如何修复此代码..

HTML代码:

<table id="tbl1">
 <tr>
        <td><a href="<?php echo site_url(); ?>admin/delete/<?php echo $get->id; ?>" class="deleteLink">Delete</a></td>
 <tr>
</table>

Jquery代码:

$(document).ready(function(){
    $(".deleteLink").click(function(e){
            $this  = $(this);
            e.preventDefault();
            var url = $(this).attr("href");
            $.get(url, function(r){
                if(r.success){
                    $this.closest("tr").remove();
                }
            });
        });
});

控制器代码:

public function delete($id){

        if (!$id) {
            return FALSE;
        }

        $this->db->where($this->_primary_key, $id);
        $this->db->limit(1);
        $delete = $this->db->delete($this->_table_name);
            if ( $delete ) return json_encode(array("success" => true));
}

1 个答案:

答案 0 :(得分:3)

首先,你的控制器并没有真正以ajax的形式返回任何数据,对吗?解决方案是:

public function delete($id) {

    $result = array('success' => FALSE, 'error' => '');

    if (!$id) {
        echo json_encode($result);
    }

    $this->db->where($this->_primary_key, $id);
    $this->db->limit(1);

    // if row was deleted successfully, result in success
    if( $this->db->delete($this->_table_name) !== FALSE) {
        $result['success'] = TRUE;

    // otherwise result in error!
    }else{
        $result['success'] = FALSE;
        $result['error'] = 'Row could not be deleted!';
    }

    echo json_encode($result);

}

然后你会有一个JSON对象作为AJAX响应,你可以在你的GET回调中轻松访问:

$.get(url, function(r){
    if(r.success){
        $this.closest("tr").remove();
    }else{
        alert('An error occured: ' + r.error);
    }
}, 'json');

请注意'}, 'json');部分 - 告诉您的GET()函数,结果是JSON格式。