【问题标题】:CodeIgniter Datatables Sorting, Searching not workingCodeIgniter 数据表排序,搜索不起作用
【发布时间】:2015-06-24 14:35:12
【问题描述】:

请帮帮我,我不知道如何设置我的 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

【问题讨论】:

    标签: jquery codeigniter datatables


    【解决方案1】:

    您使用"serverSide":true 启用了服务器端处理。在服务器端处理模式过滤中,分页和排序计算都是由服务器完成的。

    查看客户端在服务器端处理模式下发送的full list of parameters。其中包括:

    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。

    【讨论】:

      【解决方案2】:

      我相信这个问题是因为你正在做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");
      

      【讨论】:

      • 是的,返回 php 函数并回显到 javascript.. 它正在工作。我的问题是排序和搜索..
      猜你喜欢
      • 2017-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-07
      • 1970-01-01
      相关资源
      最近更新 更多