请帮我这个,我无法弄清楚如何设置我的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
答案 0 :(得分:0)
我认为这个问题是因为你正在做echo json_encode()
而不是$query = $this->db->query("SELECT * FROM tbl_fe_pages LIMIT {$start}, {$length}");
$query_count = $this->db->query("SELECT * FROM tbl_fe_pages");
,请注意当你在php中返回一些内容时,只能从其他php函数接收(可用)这些数据,你在这种情况下需要实际输出页面上的数据以便javascript接收。
另外,仅为了MVC,您应该在模型中执行所有数据库查询,而不是控制器。
应该是模型功能:
git diff HEAD HEAD^ myfile.txt
答案 1 :(得分:0)
您已使用"serverSide":true
启用了服务器端处理。在服务器端处理模式过滤中,分页和排序计算都由服务器执行。
请参阅客户端在服务器端处理模式下发送的full list of parameters。其中包括:
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 - 服务器端DataTables 1.10的CodeIgniter库。