我创建了一个表
<table id="test" class="table table-striped"></table>
现在我不想使用ServerSide处理。所以我在下面给出了这个客户端脚本
$.ajax({
type: "POST",
url:"http://URL/demo",
data:{
codeType : '10'
},success:function(data1){
var dt = [];
$.each(data1,function(i,v) {
dt.push([data1[i].id,data1[i].id1,data1[i].id2,data1[i].id3,data1[i].id4,data1[i].id5]);
});
var table = $('#test').DataTable({
"data": dt,
"bProcessing": true,
"aoColumns": [
{"title":"ID", visible:false},
{"title":"ID1"},
{"title":"ID2"},
{"title":"ID3"},
{"title":"ID4"},
{"title":"ID5"}
]
});
}
});
我可以在此表中获得正确的数据。但我在数据库中有14000条记录,但此表只显示500条记录。为什么?如何在表格中显示所有记录?
答案 0 :(得分:1)
猜测是,$.each()
循环未在您初始化DataTable
时完成(?)使用promise确保仅初始化when()
循环完成:
$.when(
$.each(data1,function(i,v) {
dt.push([data1[i].id,data1[i].id1,data1[i].id2,data1[i].id3,data1[i].id4,data1[i].id5]);
})
).then(function() {
table = $('#test').DataTable({
"data": dt,
"bProcessing": true,
...
})
})
这将确保只在$.each
完成时才会实例化dataTable,无论是1行,14.000行还是永远,如果浏览器崩溃:)