jQuery dataTables页面信息

时间:2015-09-05 06:17:54

标签: datatables

参考: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);

1 个答案:

答案 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