数据表服务器端。异步发送额外参数

时间:2014-11-09 03:39:13

标签: jquery datatables server-side

我正在使用Datatables进行服务器端处理。我可以向服务器发送额外的参数,但只有在第一次加载表时或者由于过滤,排序等而重新加载表时才会发送它们。我希望将额外的参数发送到服务器每次我从选择字段中选择一个值。我怎样才能实现这种行为?提前谢谢。

这是我的数据表脚本

<script>
$(document).ready(function() {
    $('#tabla').dataTable( {
        "sDom": '<"top"l>rt<"bottom"pi><"clear">',
        "processing": true,
        "serverSide": true,
        "sPaginationType": "full_numbers",
        "bProcessing": true,
        "sAjaxSource": "server_side3.php?action=table_data",
        "bDeferRender": true,
        "aLengthMenu": [10, 25, 40],
        "contentType": "application/json; charset=utf-8",
        "dataType": "json",

        "fnServerParams": function ( aoData ) {
            aoData.push( { "name": "year", "value": $( "#year option:selected" ).text() } );
        },
        language: {
        url: '//cdn.datatables.net/plug-ins/380cb78f450/i18n/Spanish.json'
    }

    } ).columnFilter();

} );
</script>

我也试过这段代码:

  "fnServerData": function ( sSource, aoData, fnCallback ) {
            /* Add some extra data to the sender */
            aoData.push( { "name": "year", "value": $( "#year option:selected" ).text() } );
            $.getJSON( sSource, aoData, function (json) {
            fnCallback(json)
            } );

我的HTML

<select id="year"> 
        <?php
        echo '<option value="'.date(Y).' selected">'.date(Y).'</option>';
        for ($i=2005; $i < date(Y) ; $i++) { 
            echo '<option value="'.$i.'">'.$i.'</option>';
        }

        ?>
</select>

1 个答案:

答案 0 :(得分:4)

你几乎就在那里 - 当选择了一个选择列表中的值时,你只需要调用fnDraw()

$('#year').change(function (e) {
        $('table#tabla').dataTable().fnDraw();
    });