dataTable Serverside使用draw

时间:2016-12-14 16:52:56

标签: jquery pagination datatables datatables-1.10

我正在使用jquery DataTable 1.10.13。我正在将数据显示为服务器端处理。目前我的数据表在底部显示正确的分页编号,但所有数据显示4所有分页页面。 [分页显示4页。但是所有4个页面加载相同的数据加载。]

我在教程上看到他们从模型传递一个名为'draw'的变量。我怎么能得到它?

下面是我的代码

 $('#userTable').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": {
            "type": "GET",
            "url": ",
            "dataSrc": "data",
            "contentType": "application/json; charset=utf-8",
            "dataType": "json",
            "processData": true
        },
        "columns": [
            { "data": "id" },
            { "data": "email" },
            { "data": "company" },

        ]
    } );

这是我的控制器

 public function getUserList1()
    {
    $data = $this->user->getUserListData();
   echo json_encode($data);
}

下面是我的模特。

  public function getUserListData()
    {

    $sql = 'SELECT * FROM users  ORDER BY regdate DESC';
        $query = prepare($sql);
        try {
            $query->execute($params);
            $data = $query->fetchAll();
            $total = $query->rowCount();
        } catch (PDOException $e) {
            \debug::error('MySQL errno ' . $e->getCode() . ': "' . $e->getMessage() . '" when executing: ' . $query->queryString);
        }
        $response = array(
            "draw" => '',
            "recordsTotal" => $total,
            "recordsFiltered" => $total,
            "data" => $users
        );

        return $response;

如何获得“draw”的价值=> ?

1 个答案:

答案 0 :(得分:0)

除非您从JSON字符串中解码请求参数,否则请删除以下选项:

"contentType": "application/json; charset=utf-8",

此外,您还没有正确执行服务器端处理。您需要使用jQuery DataTables发行版中提供的ssp.class.php帮助程序或切换到客户端处理模式。

要切换到客户端处理模式,请在JavaScript代码中删除以下选项:

"processing": true,
"serverSide": true,

在PHP代码中,只需按如下方式返回数据:

$response = array(
    "data" => $data
);

此外,您的数据位于$data而不是$users