Datatables ajax reload忽略了动态更新的请求参数

时间:2017-11-27 12:01:39

标签: datatable datatables server-side

我正在使用服务器端jquery datatable 1.10.16。我想通过请求带有更新参数的数据表ajax来重新加载数据。 要重新加载数据表,我使用下面的数据表api:

$('#user_data').DataTable().ajax.reload();

我的数据表初始化如下:

$('#user_data').DataTable({
        // to hide search filter
        "searching": false,
        "lengthMenu": [[5, 25, 50], [5, 25, 50]],
        processing: true,
        serverSide: true,
        ajax: {
            "url": '/admin/getStats',
            "data": {user_id: user_id, date_range: JSON.stringify(DATE_RANGE)},

        },
        columns: [
            {data: 'name', name: 'name'},
            {data: 'date', name: 'date'},
            {data: 'country', name: 'country'}
        ]
    });

DATE_RANGE和user_id是全局变量,它们更新如下:

     $('#dateSelector').on('apply.daterangepicker', function(ev, picker) {
                DATE_RANGE[0] = picker.startDate.format('DD-MM-YYYY');
                DATE_RANGE[1] = picker.endDate.format('DD-MM-YYYY');
                console.log(DATE_RANGE); // here I am getting updated value properly
// reloading the datatable , but the parameters are the previous one
                $('#user_data').DataTable().ajax.reload();
            });

如何传递更新的参数?

2 个答案:

答案 0 :(得分:0)

终于以某种方式解决了它。将来人们可能需要:

$(document).ready(function() {
    fetchData();
});

function fetchData() {
$('#user_data').DataTable({
        // to hide search filter
        "searching": false,
        "lengthMenu": [[5, 25, 50], [5, 25, 50]],
        processing: true,
        serverSide: true,
        ajax: {
            "url": '/admin/getStats',
            "data": {user_id: user_id, date_range: JSON.stringify(DATE_RANGE)},

        },
        columns: [
            {data: 'name', name: 'name'},
            {data: 'date', name: 'date'},
            {data: 'country', name: 'country'}
        ]
    });
}

$('#dateSelector').on('apply.daterangepicker', function(ev, picker) {
.....
....

     $('#user_data').DataTable().destroy();
     fetchData();
});

答案 1 :(得分:0)

我认为如果你只是重绘dataTable,一个带有更新参数的新帖子请求将被发送到服务器。

$('#dateSelector').on('apply.daterangepicker', function(ev, picker) {
  $('#user_data').DataTable().draw();
}