我目前正在使用以下代码渲染表格(这使得表格和信息很好,但分页或搜索功能不起作用)
$('#example').DataTable({
"bDestroy":true,
"iDisplayLength":5,
"lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]],
"bServerSide" : true,
"sPaginationType": "full_numbers",
"iDisplayStart ":5,
"sAjaxSource": '/path/to/controller/method',
"fnServerData" : function(sSource, aoData, fnCallback) {
$.ajax({
"dataType" : 'json',
"type" : "POST",
"url" : sSource,
"data": {requested_date: today}, // today is variable I obtain elsewhere
"success" : function(data){
str = JSON.stringify(data);
str = JSON.stringify(data, null, 4);
$('tbody').empty();
$.each(JSON.parse(str), function (i, result) {
$('tbody').append(
'<tr>' +
'<td>' + result.id + '</td>' +
'<td>' + result.name + '</td>' +
'<td>' + result.age + '</td>' +
'<td>' + result.created_at + '</td>' +
'<td>' + result.other_info + '</td>' +
'<td>' + result.message + '</td>' +
'</tr>'
)
});
}
});
}
});
我需要将今天的日期传递给我的控制器方法以获取所需的信息,然后我需要附加表格的主体以显示此信息。我究竟做错了什么?该表完美呈现,但是当我这样做时,数据表功能的使用已经消失。我知道aoData与分页和搜索工作相关,但我是如何将其用于我的代码呢?
非常感谢!
答案 0 :(得分:0)
我实际上有一个非常相似的问题。但我认为第一个问题是你将遗留的dataTable与1.10+混合在一起。
在您的声明中:$(&#39;#example&#39;)。DataTable({
如果您使用Capital D声明数据表,则需要以更新的格式传递选项,例如&#34; serverSide&#34;而不是&#34; bServerSide&#34;。请参阅https://datatables.net/examples/server_side/simple.html
上的示例我仍然遇到类似的问题,我的分页没有显示(说有100条记录,10条记录已过滤,10条数据的数组)但它没有给我正确的分页数和&#34;下一页&#34 ;按钮被禁用。
对于您的情况,选择使用旧数据表或1.10+版本使用&#34; DataTable&#34;喜欢你做的。
我希望它有点帮助!
答案 1 :(得分:0)
错误消息http://datatables.net/tn/3准确地说明了问题。
您需要先破坏表格,请参阅http://datatables.net/manual/tech-notes/3#destroy。您可以使用$(&#34; #example&#34;)。dataTable()。fnDestroy()(DataTables 1.9.x)或$(&#34; #example&#34;)。DataTable()。destroy ()(DataTables 1.10.x)。
function myfunction()
{
// Destroy the table
// Use $("#example").DataTable().destroy() for DataTables 1.10.x
$("#example").dataTable().fnDestroy()
$("#example").dataTable({
// ... skipped ...
});
}
或者,如果你正在使用DataTables 1.10.x,你可以使用附加选项&#34; destroy&#34;:true初始化新表,见下文。
function myfunction()
{
$("#example").dataTable({
"destroy": true,
// ... skipped ...
});
}