我使用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
答案 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);
}