请帮助我,我不知道如何设置我的代码点火器服务器端和数据表服务器端处理。数据似乎已经被推送到表中,但当我开始搜索和排序列时,它不起作用。
请查看我的代码
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]
此列的排序方向。将是asc
或desc
来分别指示升序或降序。在上述参数中,
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");