我有一个在serverSide模式,jquery 3.2.1和Bootstrap 4中使用DataTables 1.10.18的应用程序。
应用程序中的一页由2个DataTable组成(以后可以添加2个以上,但现在只有2个)。 每个表旁边都有一个“过滤器”按钮。 单击此按钮会发出ajax请求,从而打开Bootstrap模态窗口。 模态内部有一系列复选框。 每个表的复选框都不同,因为它们是上述提及的ajax请求的响应。
我需要做的是将选中的复选框传递到我的DataTables服务器端脚本,然后更新适当的表。
我正在为1个表提供代码,但是请注意,每个表都有一个不同的ID,这就是我区分它们的方式。
该表的标记很简单:
DateIDName...
数据表被初始化上#sharedListsTable和AJAX请求到由/get-data.json其中填充表。 ajax.data函数包含一些参数,这些参数对于使端点为正确的表提供数据是必需的,以及搜索关键字:
var sharedListsTable = $('#sharedListsTable').DataTable({
processing: true,
serverSide: true,
searching: false,
ajax: {
data: function (d) {
d.list_requested = 'sharedListsTable'; //
d.keywords = $('#keywords-sharedliststable').val(); // search keywords for list_requested
return d;
},
url: '/get-data.json',
},
// ...
});
复选框的模态如下触发:
Filter
data-remote提供了一个端点以呈现适当的复选框。 单击此按钮时,模态打开,并出现以下复选框:
每个复选框都有一个value因此屏幕截图上“ Baz”的标记如下所示:
Baz
我面临的问题是如何将这些选中的复选框值传递回DataTables端点( /get-data.json ),然后更新适当的表。
我知道如何使用jquery读取复选框值。 我已经编写了此代码段,在上面的示例中将记录为752:
var data = { 'filter_list[]' : [] };
$(":checked").each(function() {
data['filter_list[]'].push($(this).val());
});
console.log(data);
我也知道如何重新绘制我的数据表:
sharedListsTable.draw();
请有人帮忙将复选框数据传递到DataTables吗?
在链接的DataTables文档中,它说了关于使用ajax.data作为函数-我正在这样做:
这提供了根据Ajax请求向服务器提交其他信息的功能,并且功能是在每个Ajax请求上执行的,从而可以动态计算值。 例如,可以从文本输入字段中读取一个值,以充当其他搜索选项。
因此,我认为这可能与它有关,但无法弄清楚如何使其工作。