在 DataTables 1.10 中调用 fnServerData

Call fnServerData in DataTables 1.10

所以我正在看这个 example 并试图让它对我有用。

我想在使用服务器端处理时将 ​​select 选项添加到我的 table。由于我只使用过 1.10 版本,所以当我看到这个旧的 API.

时,我总是感到困惑

我不明白如何在 1.10 中使用此功能:

"sAjaxSource": "../examples_support/server_processing.php",
    "fnServerData": function ( sSource, aoData, fnCallback ) {
        /* ... additional variables ... */
        $.getJSON( sSource, aoData, function (json) {
            /* Create the select elements on the first run */
            if ( json.sEcho == 1 )
            {
                $("tfoot th").each( function (i) {
                    /* Insert the select menu */
                    this.innerHTML = fnCreateSelect(json.select[i]);

                    /* Add the event listener for the newly created element */
                    $('select', this).change( function () {
                        oTable.fnFilter( $(this).val(), i );
                    } );
                } );
            }

            /* DataTables callback */
            fnCallback(json)
        } );
    }

converting guide 只是将 fnServerData 列为 ajax

这是我的初始化代码:

$('#dataTables-outputTest').DataTable({
    "processing": true,
    "serverSide": true,
    "ajax": "/TestData/data-source",
    "columns": [
        { "data": "thing1",
          "searchable": true},
        { "data": "thing2",
         "searchable": true},
         ...
        { "data": "link",
         "searchable": false,
         "orderable": false},
    ],
    "initComplete": function () {
        this.api().columns().every( function () {
            var column = this;
            var select = $('<select><option value=""></option></select>')
                .appendTo( $(column.footer()).empty() )
                .on( 'change', function () {
                    var val = $.fn.dataTable.util.escapeRegex(
                        $(this).val()
                    );
                    column
                        .search( val ? '^'+val+'$' : '', true, false )
                        .draw();
                } );
            column.data().unique().sort().each( function ( d, j ) {
                select.append( '<option value="'+d+'">'+d+'</option>' )
            } );
        } );
    }
});

如何使用该函数以及如何重写它才能为我工作?

我好像没看懂fnServerData是干什么的。它可用于从客户端向服务器发送附加数据。所以这与我正在尝试做的相反。

我使用以下代码设法做到了这一点:

    "processing": true,
    "serverSide": true,
    ajax: {
        url: '/MyApp/data-source',
        data: function ( data ) {
            data.someKey =  "someValue";
        },
    },

然后当我在服务器上打印我的请求时,我在字典中找到了一个新对象:

'someKey': ['someValue']