我需要通过选择列表中的选项向服务器端处理发送参数,并仅检索与选择匹配的记录。
1)Javascript:发送参数的最佳方式是什么?
2)PHP:如何获取接收的值并过滤数组?
HTML
<div class="form-group">
<label for="title">Pick Name:</label>
<select name="iname" class="form-control" onchange="showUser(this.value)" style="width:500px">
<option value="Fred">Fred</option>
<option value="Lucy">Lucy</option>
<option value="Amy">Amy</option>
<option value="Joe">Joe</option>
</select>
</div>
的Javascript
function showUser(str){
$('#mytable').DataTable({
"bProcessing": true,
"sAjaxSource": "go1.php",
"aoColumns": [
{ mData: 'Name' },
{ mData: 'Start Date' },
{ mData: 'End Date' },
{ mData: 'Notes' }
]
});
};
PHP
$data = array(
array('Name'=>'Lucy', 'Start Date'=>'2017-11-01', 'End Date'=>'2017-11-01', 'Notes'=>'Notes02'),
array('Name'=>'Amy', 'Start Date'=>'2017-09-01', 'End Date'=>'2017-09-11', 'Notes'=>'Notes03'),
array('Name'=>'Fred', 'Start Date'=>'2017-02-03', 'End Date'=>'2017-02-04', 'Notes'=>'Notes04'),
array('Name'=>'Joe', 'Start Date'=>'2017-03-05', 'End Date'=>'2017-03-21', 'Notes'=>'Notes05')
);
$results = array(
'sEcho'=>'1',
'iTotalRecords'=>count($data),
'TotalDisplayRecords'=>count($data),
'aaData'=>$data
);
echo json_encode($results);
此致 埃利奥·费尔南德斯
答案 0 :(得分:0)
要在datatables请求中传递自定义参数,您可以使用fnServerParams添加到数据表初始化代码中,如下所示:
$('#mytable').DataTable({
"bProcessing": true,
"sAjaxSource": "go1.php",
"fnServerParams": function (aoData) {
aoData.push({ "name": "UserName", "value": $('[name="iname"]').val() });
},
"aoColumns": [
{ mData: 'Name' },
{ mData: 'Start Date' },
{ mData: 'End Date' },
{ mData: 'Notes' }
]
});
每次数据表绘制时,新参数也将被传递。在服务器端,您需要从查询字符串中获取新的自定义参数,在PHP中我认为它是$_GET["UserName"]
。
请注意,您使用的是datatables v1.9语法,因此我的示例也是如此(即使您使用大写的Datatables
进行初始化)。如果你想使用v1.10然后使用ajax.data,语法会有所不同。