如何更改 DataTables 中的 AJAX 数据

How to change AJAX data in DataTables

我有一个 DataTable,它能够在 初始化 table 时成功获取一次 AJAX 数据。
现在我需要能够 "refetch" AJAX 数据来更新 DataTable,但是 无需重新初始化 table。

经过一番研究,我发现我需要使用以下行 "as a function":

ajax.data( data, settings )

此处解释:http://datatables.net/reference/option/ajax.data

不过。我找不到如何使用这个 "as a function"。页面上没有一个示例。

我试了如下
我的DataTable创建初衷:

launch_datatable_ajax = function(){
    get_ajax_data();

    dyn_t = $('#dynamic_table').DataTable({
            "ajax": {
                "url":ajax_url,
                "data":data,
                "dataSrc":""
            },
            "columns": [
                { "data" : "ID" },
                { "data" : "post_title" },
                { "data" : "supplier_company" },
                { "data" : "img_src" },
                { "data" : "tags" },
                { "data" : "post_meta" },
            ],

    });

}

然后我尝试用新参数重新加载数据。 这是我卡住的地方。

dyn_t.ajax.data(data,dyn_t.settings);

我认为我的参数是正确的:
dyn_t.settings 给出了一些信息:console.log(dyn_t.settings);
'data' 给出我的对象(get 变量):console.log(data);

但是 console.log 说:

Uncaught TypeError: dyn_t.ajax.data is not a function(…)

可以使用 dyn_t.ajax.reload(); 重新加载。

但是您的要求是将更新后的 URL 参数也发送到服务器。

为此,您需要使用 ajax 的函数参数:http://datatables.net/reference/option/ajax#function

函数在每次 ajax.reload() 调用中重新验证。这就是将发送新参数的原因。因此,假设您有一个 ID 为 my-form 的 HTML 表单,请尝试这样的操作:

            ajax: function ( data, callback, settings ) {
                $.ajax({
                    url: "ajax_url?" + $("my-form").serialize(),
                    data: { start: data.start, count: data.length }
                });
            },