数据表 Ajax 搜索
DataTables Ajax Search
我正在开发一个使用 DataTables jQuery 插件以及 PHP 和 MySQL 的项目。
我目前有一个 table 通过 AJAX 请求提取数据并读取 JSON 响应。
$('#example1').dataTable( {
"processing": false,
"serverSide": true,
"pageLength": 10,
"bFilter": false,
"aaSorting": [[1,'desc']],
"columnDefs": [
{ "width": "10%", "targets": 0 },
{ "width": "100%", "targets": 1 },
{ "width": "220%", "targets": 2 },
{ "width": "130%", "targets": 3 },
{ "width": "180%", "targets": 4 }
],
"responsive": true,
"dom": '<"top"<"clear">>rt<"bottom"p<"clear">>',
"ajax": "ajax.parser.php?ajax_request=assignmentlist",
"fnDrawCallback" : function(oSettings) {
var total_count = oSettings.fnRecordsTotal();
var columns_in_row = $(this).children('thead').children('tr').children('th').length;
var show_num = oSettings._iDisplayLength;
var tr_count = $(this).children('tbody').children('tr').length;
var missing = show_num - tr_count;
if (show_num < total_count && missing > 0){
for(var i = 0; i < missing; i++){
$(this).append('<tr class="space"><td colspan="' + columns_in_row + '"> </td></tr>');
}
}
if (show_num > total_count) {
for(var i = 0; i < (total_count - tr_count); i++) {
$(this).append('<tr class="space"><td colspan="' + columns_in_row + '"> </td></tr>');
}
}
}
});
我想在 table 的顶部混合输入框和 select 框以传递到 AJAX 请求中,以便我可以直接执行搜索在数据库中。我对插件的了解有限,不确定如何执行此操作。
我想达到的效果是这样的:
https://datatables.net/examples/api/multi_filter_select.html
但是,这并没有显示当数据源是 JSON 响应时如何执行操作,也不允许我控制 select 框中的选项。
提前致谢...
为此您使用 fnServerParams
。
您可以像往常一样添加过滤控件,例如
<select id="myselect">
<option val="1">1</option>
<option val="2">2</option>
</select>
将此包含在您的数据表初始化代码中:
// Pass custom param to server
"fnServerParams": function (aoData) {
aoData.push({ "name": "myparam1", "value": $('#myselect').val()});
}
此示例采用 ID 为 myselect
的选择列表的选择项值,并将其添加为名为 myparam1
的自定义请求参数
您的服务器端代码需要从请求中获取此值 Request.QueryString['myparam1']
并将其用于过滤源数据。要添加额外的自定义参数,只需将另一个 aoData.push
行添加到 fnServerParams
.
因为我使用的是 v 1.10,所以功能有些不同,但是@markpsmith
引导我走上了正确的道路
"ajax": {
"url": "ajax.parser.php?ajax_request=assignmentlist",
"data": {
"status": $('#myselect').val()
}
}
然后以我的形式...
<select id="myselect">
<option val="1">1</option>
<option val="2">2</option>
</select>
我正在开发一个使用 DataTables jQuery 插件以及 PHP 和 MySQL 的项目。
我目前有一个 table 通过 AJAX 请求提取数据并读取 JSON 响应。
$('#example1').dataTable( {
"processing": false,
"serverSide": true,
"pageLength": 10,
"bFilter": false,
"aaSorting": [[1,'desc']],
"columnDefs": [
{ "width": "10%", "targets": 0 },
{ "width": "100%", "targets": 1 },
{ "width": "220%", "targets": 2 },
{ "width": "130%", "targets": 3 },
{ "width": "180%", "targets": 4 }
],
"responsive": true,
"dom": '<"top"<"clear">>rt<"bottom"p<"clear">>',
"ajax": "ajax.parser.php?ajax_request=assignmentlist",
"fnDrawCallback" : function(oSettings) {
var total_count = oSettings.fnRecordsTotal();
var columns_in_row = $(this).children('thead').children('tr').children('th').length;
var show_num = oSettings._iDisplayLength;
var tr_count = $(this).children('tbody').children('tr').length;
var missing = show_num - tr_count;
if (show_num < total_count && missing > 0){
for(var i = 0; i < missing; i++){
$(this).append('<tr class="space"><td colspan="' + columns_in_row + '"> </td></tr>');
}
}
if (show_num > total_count) {
for(var i = 0; i < (total_count - tr_count); i++) {
$(this).append('<tr class="space"><td colspan="' + columns_in_row + '"> </td></tr>');
}
}
}
});
我想在 table 的顶部混合输入框和 select 框以传递到 AJAX 请求中,以便我可以直接执行搜索在数据库中。我对插件的了解有限,不确定如何执行此操作。
我想达到的效果是这样的:
https://datatables.net/examples/api/multi_filter_select.html
但是,这并没有显示当数据源是 JSON 响应时如何执行操作,也不允许我控制 select 框中的选项。
提前致谢...
为此您使用 fnServerParams
。
您可以像往常一样添加过滤控件,例如
<select id="myselect">
<option val="1">1</option>
<option val="2">2</option>
</select>
将此包含在您的数据表初始化代码中:
// Pass custom param to server
"fnServerParams": function (aoData) {
aoData.push({ "name": "myparam1", "value": $('#myselect').val()});
}
此示例采用 ID 为 myselect
的选择列表的选择项值,并将其添加为名为 myparam1
您的服务器端代码需要从请求中获取此值 Request.QueryString['myparam1']
并将其用于过滤源数据。要添加额外的自定义参数,只需将另一个 aoData.push
行添加到 fnServerParams
.
因为我使用的是 v 1.10,所以功能有些不同,但是@markpsmith
引导我走上了正确的道路"ajax": {
"url": "ajax.parser.php?ajax_request=assignmentlist",
"data": {
"status": $('#myselect').val()
}
}
然后以我的形式...
<select id="myselect">
<option val="1">1</option>
<option val="2">2</option>
</select>