jQuery DataTables大数据异步二次加载渲染及initComplete事件bug

来源:互联网 发布:ubuntu xrandr 编辑:程序博客网 时间:2024/06/04 19:46

我们在使用dataTables进行数据统计时,不可避免的会碰到对大数据的统计。当进行服务器端大数据读取时,毫无疑问的会占用大量加载时间,拖慢页面加载速度。为优化页面加载速度问题,我们便要在将请求中最耗时的部分在页面加载完成之后,进行二次加载,渲染入数据。

之前我采用的是重新发起dataTables渲染事件,来进行二次加载。如下:

<script type="javascript/text">var datat = $('.dataTables-example').DataTable({    //初始化信息。。。    此处省略,请参看之前博文});datat.on('draw.dt',function() {        datat1.column(7, {       //7是需要渲染的列            search: 'applied',            order: 'applied'        }).nodes().each(function(cell, i) {            $.get(url,{id:i},function(res){   //参数可以有其他获取方式                cell.innerHTML = res.data;   //向单元格中写入数据            });        });    }).draw();</script>

这种方法的缺点是会发起2次dataTables请求,影响加载速度。而利用dataTables自带的”DrawCallback”渲染事件参数。

<script type="javascript/text">var datat = $('.dataTables-example').DataTable({    //其他初始化信息。。。      "drawCallback":function(s){           datat.column(7).nodes().each(function(cell,i){                 $.get("__URL__/getClicknum",{id:i},function(res){                     cell.innerHTML = res.data;                 });             });         },  });</script>

这样就可以避免重复请求,完成二次加载。
注意:不能使用”initComplete”加载完成事件,其在翻页时会失效。

0 0
原创粉丝点击