将自定义参数传递到datatables.js

时间:2017-04-06 19:51:24

标签: javascript jquery datatable datatables

我使用DataTables将数据加载到表格中 - 数据非常庞大,因此我使用的服务器端处理功能非常出色。但是,我不确定如何将自定义参数传递到我的ajax调用中。

我该如何做和多个参数(即不同参数的不同按钮)?

到目前为止,这是我的代码:

<script>
$.fn.dataTable.ext.buttons.reload = {
text: 'Reload',
action: function ( e, dt, node, config ) {
    dt.ajax.reload();
}
};


    $(document).ready(function() {
        $('#landing_pages').DataTable( {
            dom: 'Blfrtip',
            keys: true,
            deferRender: true,
            responsive: true,
            "searching": false,
            "lengthMenu": [[10, 25, 50, 500], [10, 25, 50, 500]],
            buttons: [
                'copy', 'csv', 'excel', 'pdf', 'print', 'reload'
            ],
            "processing": true,
            "serverSide": true,
            "ajax":{'url': "/data-source/landing-pages/{{profile_id}}{{page_dim}}", "data": function ( d ) {
            d.myKey = "myValue";
            // d.custom = $('#myInput').val();
            // etc
        }}

        } );
    } );
    </script>

这是基于这个例子: https://datatables.net/examples/server_side/custom_vars.html

1 个答案:

答案 0 :(得分:0)

一种方法是销毁数据表,然后使用您想要的参数重新初始化它。像这样:

$.fn.dataTable.ext.buttons.reload = {
text: 'Reload',
action: function ( e, dt, node, config ) {

    // Get the profile_id and page_dim values to pass in to the initializer

    // Destroy the datatable
    $("#MyTable").dataTable().fnDestroy();
    // reinitialize the datatable with the new call with the variables
    InitializeTable(profile_id, page_dim);
}
};

function InitializeTable(profile_id, page_dim) {

    var initTable = {
        dom: 'Blfrtip',
            keys: true,
            deferRender: true,
            responsive: true,
            "searching": false,
            "lengthMenu": [[10, 25, 50, 500], [10, 25, 50, 500]],
            buttons: [
                'copy', 'csv', 'excel', 'pdf', 'print', 'reload'
            ],
            "processing": true,
            "serverSide": true,
            "ajax":{'url': "/data-source/landing-pages/" + profile_id + "/" + page_dim, "data": function ( d ) {
            d.myKey = "myValue";
    };

    // Initialize the data table with the parameters above
    $("#MyTable").dataTable(initTable);
}