как передать параметры при перезагрузке datatables

у меня есть datatable, который я инициализирую следующим образом:

mytable = DataTable({
        ajax:{
            url: "/url/getTableData",
            dataSrc: ""

        },
        sortClasses: false,
        paging: false,
        scrollY: 300,
        columns: cols
    });

позже я хотел бы сделать

mytable.ajax.reload();

Он отлично работает, но теперь я хотел бы отправить несколько параметров в запросе. Эти параметры мне нужны только при перезагрузке, а не при инициализации таблицы. Как мне это сделать? спасибо!

1 ответов


1 - используйте preXhr.событие ДТ.

table = $('#example')
    .on('preXhr.dt', function ( e, settings, data ) {
        data.whateveryouwant = $("#someidhere").val()
        data.anotherexample = "kittens"
    } )
// then just setup your datatable as normal
    .DataTable({
        ajax:{
            url: "/url/getTableData",
            type: "GET" // This is the default value, could also be POST
        },
        sortClasses: false,
        paging: false,
        scrollY: 300,
        columns: cols
});

смотрите здесь http://datatables.net/reference/event/

Вариант 2 (предпочтительно) - используйте ajax.функция данных.

table = $('#example').DataTable({
    ajax:{
        url: "/url/getTableData", // Change this URL to where your json data comes from
        type: "GET", // This is the default value, could also be POST, or anything you want.
        data: function(d) {
            d.whateveryouwant = $("#someidhere").val()
            d.anotherexample = "kittens"
        }

    },
    sortClasses: false,
    paging: false,
    scrollY: 300,
    columns: cols
});

оба варианта дают одинаковый результат. Ваш сервер не заметит разницы. Дополнительные данные будут добавлены на каждом table.ajax.reload(). Дополнительные данные будут:

whateveryouwant of со значением #someidhere элемент, и

anotherexample со значением "kittens"

Я предпочитаю 2, потому что более очевидно, что дополнительные данные добавляются по каждому запросу. Первый вариант немного подлый и не такой очевидный для кого-то, кто читает ваш код, я думаю.