4

我正在使用带有服务器端处理和 ColumnFiltering 附加组件的 jquery DataTables(来自 datatables.net)。我需要添加一个回调,它将根据过滤的数据计算小计。为了实现这一点,我想进行单独的 ajax 调用。如何提取当前的 ajax 参数?

4

4 回答 4

8

在创建时将数据表对象分配给 var,例如:

var oTable = $("selector").dataTable({...});`

以后用这个:

var params = oTable.oApi._fnAjaxParameters(oTable.dataTable().fnSettings());

它返回所有将在数据表的正常数据加载请求中发送的 ajax 参数。像这样进行 ajax 调用:

$.post("url",$.param(params),function(response){....});
于 2013-06-26T04:32:09.293 回答
5

如果您使用的是 DataTables 1.10(此答案的当前版本),现在使用 ajax.params() 方法更容易访问。

来自http://datatables.net/reference/api/ajax.params()的示例

var table = $('#example').DataTable( {
    ajax: "data.json",
    serverSide: true
} );

table.on( 'xhr', function () {
    var data = table.ajax.params();
    alert( 'Search term was: '+data.search.value );
} );
于 2015-02-09T19:08:05.963 回答
0

根据您的问题,您可能还需要 ajax 排序参数。下面的代码假设您有一个名为“your_table”的数据表。

$.ajax({
   url: "your_url",
   data: {         
       orderColumn: your_table.ajax.params().order[0]['column'],
       orderDirection: your_table.ajax.params().order[0]['dir'],
       searchText: your_table.ajax.params().search.value
   }
});

谢谢 MrDerp 的回复 - 帮我准备了自己的桌子!我很难找到其他参数,所以我想我会在这里分享。

于 2017-05-04T23:13:03.660 回答
0

尝试这个:

table.on( 'xhr', function () {
            var data = table.ajax.params();
            var filter_values = [];

            //suppose you have 10 columns in your datatable
            for(i=0;i<10;i++){
                search_value = "sSearch_"+i;
                filter_values.push(data[search_value])
            }
            console.log(filter_values);
        });
于 2018-12-01T05:17:22.563 回答