2015-09-05 3 views
1

Ссылка: http://datatables.net/reference/api/page.info()JQuery DataTables страница Информация о

Я пытаюсь получить информацию о текущей постраничной в течение Ajax POST генерируется JQuery DataTable.

Используя предоставленную функцию .page.info(), он возвращается со всеми нулями для страниц и страницы, хотя таблица имеет несколько страниц.

Моя цель состоит в том, чтобы обеспечить постраничной информацию рядом с PAGINATION типа "простой",

Page [Текущая страница номер] от [общее количество страниц] [< |>].

Это результирующий выход:

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

Классический 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 запускается только тогда, когда пользователь нажимает на новую страницу или страница изменяется программно.

Смежные вопросы