datatables分页没有ajax数据,datatables实现后端分页

使用datatables的一些总结

后端分页

在一开始的迭代中,使用的是默认的前端分页,但这个肯定性能是不行的,而后改为后端分页时,遇到的一些坑。

a2c5912dfb82ebd9ea5aa6ad7e892943.png

也许是我看文档不够仔细,datatables的文档看的我有些痛苦。在结合例子和度娘的情况下,捣鼓出来了

// 实例化ajax方法,实现后端分页

$.fn.dataTable.ajax = function(options) {

var conf = $.extend({

method: 'GET',

}, options);

return function(request, drawCallback, settings) {

var param = {};

param.size = request.length;//页面显示记录条数,在页面显示每页显示多少项的时候

param.start = request.start;//开始的记录序号

param.page = (request.start / request.length);//当前页码

$.extend(param, request)

$.extend(param, conf.data)

delete param.columns; // 移除列

settings.jqXHR = $.ajax({

type: conf.method,

url: conf.url,

data: param,

success: function(data) {

var params = {};

params.draw = param.draw; // 一定注意这个draw

params.recordsTotal = data.page.totalElements; // 数据总数

params.recordsFiltered = data.page.totalElements;// 过滤后的总数,我这里和总数一致

params.data = data._embedded[conf.dataSrc];

drawCallback(params);

}

})

}

}

复制代码

这里要说下这个draw参数,之前没有在意这个参数,导致请求了第二页的数据,表格不刷新,还是第一页的数据,文档上的说明是:前端请求时带draw参数,返回时后端一并返回,防止ajax异步导致数据返回不对应的问题。

接下来就是使用这个方法去创建表格

$("#tickets").DataTable({

serverSide: true, // 设置为后端分页

ajax: $.fn.dataTable.ajax({

url: '/api/demands',

data: { size: 10},

dataSrc: 'demands',

}),

columns: [...],

});

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值