我正在使用Datatables在我的Web应用程序中显示表格数据,并将其配置为利用服务器端处理,即通过AJAX查询服务器以查找过滤后的数据。我想根据特定于我的应用程序的附加参数进行筛选,即对应于某些用户选项(例如,通过UI中的复选框)。如何使DataTables将这些附加的筛选器参数传递到服务器?
此答案为1.10.6版本更新
现在可以使用ajax选项完成此操作。
示例代码
$table.dataTable({
"ajax": {
"url": "example.com/GetData",
"type": "POST",
"data": function(d) {
d.Foo = "bar";
d.Bar = "foo";
d.FooBar = "foobarz";
}
},
"serverSide":true,
});
Foo、Bar和FooBar将作为附加参数作为表单数据发布,以及其他现有参数,如draw、start、length等,因此根据服务器端语言,您可以相应地读取它们。
在现实生活中的scenerio中,您可能有一个搜索按钮和一些输入,您可以通过调用
var table = $table.DataTable();
table.ajax.reload();
单击按钮时。
解决方案是使用DataTables的fnServerParams选项,该选项允许您添加要在发送到服务器的XMLHttpRequest中发送的自定义参数。例如:
$(document).ready(function() {
$('#example').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/IndexXhr",
"fnServerParams": function (aoData) {
var includeUsuallyIgnored = $("#include-checkbox").is(":checked");
aoData.push({name: "includeUsuallyIgnored", value: includeUsuallyIgnored});
}
});
});