2017-08-10 168 views
3

我一直在使用数据表一段时间,但显然,我没有以正确的方式使用它们。jquery数据表功能无法操作

在过去,我将开始我的数据表使用$。员额,具体如下:

$(document).ready(function() { 
    $.post('process/recordTables.php', function(data) 
    { 
    var table = $('#example1').DataTables(); 
    table.clear(); 
    var obj = JSON.parse(data); 
    obj.forEach(function(item) 
    { 
     table.row.add([item.column1, item.column2, //and so on]); 
    }); 
    table.draw(); 
    }); 
}); 

上面的代码工作。我的数据表打印我需要的数据。在obj.forEach中,如果需要,我可以设置具有href标记和其他功能的列。

但是,如果我想能够在设定的时间间隔重新加载数据表,我不能使用上面的方法。它必须使用“ajax”方法。

几个试错后,使用下面的代码,我能够打印出的jQuery数据表的“正确”的形式(和使用):

$(document).ready(function() 
{ 
    $('#example1').DataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": { 
     "url": "process/recordTables.php", // same url as the above code 
     "type": "POST", 
     "dataSrc": '' 
    }, 
    "columns": [ 
     { "data": "" }, 
     { "data": "column1" }, 
     { "data": "column2" }, 
     { "data": "column3" }, 
     // and so on 
    ], 
    "iDisplayLength": 25, 
    "order": [[ 3, "desc" ]], 
    "scrollY": 550, 
    "scrollX": true, 
    "bDestroy": true, 
    "stateSave": true, 
    // few others that don't seem to affect functionality 
    }); 
}); 

使用代码立即上面,我能够使用$ .post方法显示相同的数据。

但是......没有一项功能可行。排序不起作用。分页,搜索过滤器和表格底部的数据信息显示“0个0条目”。什么都没有

我错过了什么来解决这个问题?我很困惑。

预先感谢您。

*编辑*

下面是HTML表:

<table id="example1" class="table table-bordered table-hover table-condensed"> 
<thead> 
    <tr> 
    <th></th> 
    <th>Column1</th> 
    <th>Column2</th> 
    <th>Column3</th> 
    // and so on 
    </tr> 
</thead> 
<tbody> 
</tbody> 
</table> 
+1

你能后的行动与此DataTable相关的HTML?并且具有值为''的属性dataSrc将不显示数据。完全删除该属性。 – Cratebox99

+0

添加了表格。我确实有TR和TD标签与TBODY,但仍得到相同的结果。 –

+1

您的HTML很好,只要th计数与dataTable定义中的列匹配,就不需要触摸它。 – Cratebox99

回答

2

当您添加"serverSide": true,属性,你设置你的DataTableserver-side processing。在这种情况下,所有的客户端处理被禁用:

使用服务器端的处理功能后,所有页面,搜索,排序是数据表进行转交给了服务器

+0

@davidkonrad我犯了一个错误,并复制了错误的属性... snap。现在纠正。 –