参考:http://datatables.net/reference/api/page.info()
我正在尝试获取ajax POST生成的jQuery DataTable的当前分页信息。
使用提供的函数.page.info(),它返回页面和页面的全零,即使表有多个页面。
我的目标是在分页类型“简单”旁边提供分页信息,
[总页数]页面[当前页码] [< |>] 。
这是结果输出:
Object {
end: 0
length: 10
page: 0
pages: 0
recordsDisplay: 0
recordsTotal: 0
start: 0
}
这是jQuery DataTable代码:
var oSegmentsDatatable = $('table#segments-datatable').DataTable({
ajax: {
type: "POST",
url: urlSegmentsDatatable,
data: {'advertiser_id':<?=$advertiser_id?>},
error: function (jqXHR, textStatus, errorThrown) {
}
sDom: 'p<"H"f>t<"F"lr>',
bProcessing: false,
bServerSide: true,
responsive: true,
bFilter: true,
sPaginationType: "simple",
aaSorting: [[8,'desc']],
bAutoWidth: false,
aoColumns : [
{ 'sWidth': '25%' }, // 0
{ 'sWidth': '3%' }, // 1
{ 'sWidth': '3%' }, // 2
{ 'sWidth': '3%' }, // 3
{ 'sWidth': '3%' }, // 4
{ 'sWidth': '5%' }, // 5
{ 'sWidth': '5%' }, // 6
{ 'sWidth': '5%' }, // 7
{ 'sWidth': '10%' } // 8
],
columnDefs: [{
targets: "no-sort",
orderable: false
}]
});
var info = oSegmentsDatatable.page.info();
console.log(info);
答案 0 :(得分:2)
经典的javascript异步问题。您的
var info = oSegmentsDatatable.page.info();
在AJAX完成业务之前执行。您最好在drawCallback
回调中执行此操作:
function processInfo(info) {
console.log(info);
//do your stuff here
}
var table = $('#example').DataTable({
//other initialisation options
drawCallback : function() {
processInfo(this.api().page.info());
}
});
你也可以挂钩page.dt
事件,但是你必须在第一次初始化时做一些事情。只有当用户点击新页面或以编程方式更改页面时,才会触发page.dt
。