我有一个像这样初始化的数据表:
mytable = DataTable({ ajax:{ url: "/url/getTableData", dataSrc: "" }, sortClasses: false, paging: false, scrollY: 300, columns: cols });
以后我想做
mytable.ajax.reload();
它工作正常,但现在我想在该请求中发送一些参数。这些参数仅在重新加载时才需要,而在表的初始化中则不需要。我怎么做?谢谢!
选项1- 使用preXhr.dt事件。
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.data函数。
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()。额外的数据将是:
table.ajax.reload()
whateveryouwant具有#someidhere元素的值,并且
whateveryouwant
#someidhere
anotherexample 具有价值 "kittens"
anotherexample
"kittens"
我更喜欢 Option 2 ,因为很明显,在每个请求上都添加了额外的数据。第一种选择有点偷偷摸摸,对于其他人,我认为阅读您的代码并不那么明显。