CodeIgniter数据表排序,搜索不起作用



请帮助我,我不知道如何设置我的代码点火器服务器端和数据表服务器端处理。数据似乎已经被推送到表中,但当我开始搜索和排序列时,它不起作用。

请查看我的代码

CI服务器端控制器

function admin_pages_datatable()
{
    $start = $this->input->post("start");
    $length = $this->input->post("length");
    $draw = $this->input->post("draw");
    $query = $this->db->query("SELECT * FROM tbl_fe_pages LIMIT {$start}, {$length}");
    $query_count = $this->db->query("SELECT * FROM tbl_fe_pages");
    $query_count = $query_count->num_rows();
    $query = $query->result();
    $datatable = array();
    $s = 1;
    foreach($query as $row){
        $datatable["data"][] = array(
            $s++,$row->subject,$row->descriptions,$row->type,$row->status,'F'
        );
    }
    $datatable["draw"] = $draw;
    $datatable["recordsTotal"] = 10;
    $datatable["recordsFiltered"] = $query_count;
    return json_encode($datatable);
}

Javascript

var table_items_all = $('#data').dataTable({
            "aaSorting": [[ 2, "desc" ]],
            "scrollY"           : "300px",
            "scrollCollapse"    : true,
            "processing"        : true,
            "serverSide"        : true,
            "ajax": {
                "url" : "http://localhost/myproject/maintenance/admin_pages_datatable",
                "type" : "POST"
            },
            "language": {
                "emptyTable":     "My Custom Message On Empty Table"
            },
            "aoColumns": 
            [
                null, null, null, null, null, {sClass: 'controls'}
            ],
        }); 

非常感谢您的帮助:D

您使用"serverSide":true启用了服务器端处理。在服务器端处理模式下,过滤、分页和排序计算都由服务器执行。

请参阅客户端在服务器端处理模式下发送的参数的完整列表。其中包括:

search[value]全局搜索值

order[i][column]应应用排序的列。这是对同样提交给服务器的信息列数组的索引引用。

order[i][dir]此列的排序方向。将是ascdesc来分别指示升序或降序。

在上述参数中,i是一个整数,它将改变以指示数组值。在大多数现代服务器端脚本环境中,这些数据将自动作为数组提供给您。

因此,我认为您应该添加以下将成为数组的变量:

$search = $this->input->post("search");
$columns = $this->input->post("columns");
$order = $this->input->post("order");

然后,您需要根据这些数组中的数据修改SQL查询。

或者,您可以寻找已经为您完成服务器端处理逻辑的库,而不是重新发明轮子。例如,有github.com/zepernick/Codeigniter-DataTables-Codeigniter Library For Server Side DataTables 1.10。

我认为问题是因为您正在执行return json_encode()而不是echo json_encode(),请注意,当您在php中返回某个数据时,该数据仅从其他php函数接收(即可用),在这种情况下,您需要实际输出页面上的数据,以便javascript获取。

此外,为了MVC,您应该在模型中而不是在控制器中执行所有数据库查询。

应为模型函数:

$query = $this->db->query("SELECT * FROM tbl_fe_pages LIMIT {$start}, {$length}");
$query_count = $this->db->query("SELECT * FROM tbl_fe_pages");

最新更新