CodeIgniter:使用AJAX从MySQL数据库删除数据


CodeIgniter: Delete data from MySQL DB using AJAX

我正在做一个项目,在管理面板里面我有一个查询表,我想让管理员删除其中的任何一个。我的视图代码如下:

<button type="button" class="btn btn-danger delbtn" onclick="delenquiry(<?php echo $value->id;?>)">Delete this Enquiry</button>
我的ajax代码是:
function delenquiry(id) {
    if (confirm("Are you sure?")) {
        $.ajax({
            url: base_url + 'loginc/delenq',
            type: 'post',
            data: id,
            success: function () {
                alert('ajax success');
            },
            error: function () {
                alert('ajax failure');
            }
        });
    } else {
        alert(id + " not deleted");
    }
}

控制器代码为:

 public function delenq() {
        $id = $this->input->post('id');
        $this->logins->delenqs($id);
    }

模型代码为:

public function delenqs($id) {
    $this->db->where('id', $id);
    $this->db->delete('enquiry');
}
我寻找答案,但没有得到任何答案。谁能告诉我我的代码出了什么问题?

您需要从ajax请求更改传递id

 data: id,

 data: {id:id},

对于数据,必须提供数组。例如=> data:{name_params:10}你可以在php $id = $this->input->post('name_params');中获取数据$id的值将是= 10

您的问题是您的ID不是您的POST中的可用密钥。您需要定义{id : id}。但是,我认为这从MVC方法中更有意义:

$.ajax({
    url: base_url + 'loginc/delenq/'+ id, //maintains the (controller/function/argument) logic in the MVC pattern
    type: 'post',
    success: function(data){
        console.log(data);
    },
    error: function(a,b,c){
        console.log(a,b,c);
    }
});

那么你可以期待一个参数到你的控制器函数:

public function delenq($id){
    if($id)
        return $this->logins->delenqs($id);
    return false;
}

最后,你的模型可以得到一点fixer upper,这样它也能正确返回。

public function delenqs($id) {
    $this->db->delete('enquiry', array('id' => $id));
    return $this->db->affected_rows() > 1 ? true:false;
}