jQuery 数据表页面信息

Jef*_*ner 3 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
}
Run Code Online (Sandbox Code Playgroud)

这是 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);
Run Code Online (Sandbox Code Playgroud)

dav*_*rad 5

经典的 javascript 异步问题。你的

var info = oSegmentsDatatable.page.info();
Run Code Online (Sandbox Code Playgroud)

在 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());
   }
});
Run Code Online (Sandbox Code Playgroud)

您也可以加入该page.dt事件,但是您必须在第一次初始化时执行一些操作。page.dt仅当用户单击新页面或以编程方式更改页面时才会触发。