Jquery Datatable未显示超过500个条目的记录

时间:2016-06-24 06:33:01

标签: jquery mysql datatables

我创建了一个表

<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条记录。为什么?如何在表格中显示所有记录?

1 个答案:

答案 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行还是永远,如果浏览器崩溃:)