DataTables行很好但是没有初始化?

时间:2014-09-17 07:59:27

标签: javascript jquery ajax json jquery-datatables

我用DataTables建立了我的网站 我从我的java servlet后端通过它的ajax服务获取我的数据 - 这工作正常,DOM一切看起来都不错。但即使我掌握了所有数据,看起来所有的DataTables功能都失败了。

datatables no features

(所有字段都有效,我故意将null返回给空字段)
我的jQuery DataTables设置如下所示:

function getUserTable() {
  var table = $('#example').DataTable({
    "destroy": true,
    "processing": true,
    "serverSide": true,
    "ajax": {
        "dataType": 'json',
        "url": "action=getAllUsers",
        "type": "POST",
        "dataSrc": "allUsers"
    },
    "columns": [
        {"data": "id"},
        {"data": "username"},
        {"data": "firstName"},
        {"data": "lastName"},
        {"data": "loggedIn"},
        {"data": "email"}
    ]
  });
}

所以我将serverSide设置为true,因为我的后端位于同一台服务器上 - 我似乎无法找到任何相关教程,但似乎内置搜索功能在设置为服务器端时无效?
另外为什么表格似乎没有被初始化?它显示太多页面并说“显示0到0的0个条目” 我返回的json数据如下所示:

allUsers: [{email:null, firstName:null, id:1, lastName:null, loggedIn:false, username:mag},…]

Html表格结构:

<table id="example" class="display" cellspacing="0" width="100%">
                <thead>
                    <tr>
                        <th>Id</th>
                        <th>Brugernavn</th>
                        <th>Navn</th>
                        <th>Efternavn</th>
                        <th>Logged</th>
                        <th>Email</th>
                    </tr>
                </thead>
                <tfoot>
                    <tr>
                        <th>Id</th>
                        <th>Brugernavn</th>
                        <th>Navn</th>
                        <th>Efternavn</th>
                        <th>Logged</th>
                        <th>Email</th>
                    </tr>
                </tfoot>
            </table>

1 个答案:

答案 0 :(得分:2)

关于内置搜索功能,我记得你是对的。它不适用于AJAX。您可以使用它,但不使用内置搜索。必须在服务器端进行搜索。当使用搜索字段时,使用包含搜索值的附加参数创建新的AJAX。

要使分页工作,您必须返回ajax响应中的总条目数,并在初始化DataTable时设置分页配置。

实施例

Ajax响应:

{"iTotalRecords":"497","iTotalDisplayRecords":"497","aaData":[]}

分页配置:

var gridSettings = {
/* .... */
    "iDisplayStart": 0,
    "iDisplayLength": 20
};
$('#elt').dataTable(gridSettings);