数据表 - 将参数发送到服务器端处理

时间:2017-10-23 11:24:42

标签: datatables server-side

我需要通过选择列表中的选项向服务器端处理发送参数,并仅检索与选择匹配的记录。

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);

此致 埃利奥·费尔南德斯

1 个答案:

答案 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,语法会有所不同。