抑制数据表 ajax 请求中不必要的参数?

Suppress unnecessary parameters in datatables ajax request?

我正在使用带有 ajaxserverSide 选项的 jquery datatables 插件。 documentation specifies 每个请求中包含的字段。他们有很多。大多数并没有真正为我的用例添加任何内容。这是来自请求的查询字符串参数的简短摘录。

columns[0][data]:0
columns[0][name]:
columns[0][searchable]:true
columns[0][orderable]:true
columns[0][search][value]:
columns[0][search][regex]:false
columns[1][data]:1
columns[1][name]:
columns[1][searchable]:true
columns[1][orderable]:true
columns[1][search][value]:
columns[1][search][regex]:false

table 中的每一列都如此。当使用 10 列时,这会创建一个非常长的查询字符串。事实上,我 运行 在我的网络服务器中遇到 url 长度限制。

有什么方法可以禁止包含某些属性,或者禁止包含空属性或具有默认值的属性?该文档没有任何明显的方法来限制查询字符串的大小。

我找到了解决这个问题的好方法。 Datatables 提供了一种内置方法来改变在发出请求之前调用的 ajax 查询参数。你可以这样指定它。就我而言,我不关心整个 columns 数组属性,所以我只是将其删除。

    var options = {
        sDom: "lftip", 
        /* set your options to suit your taste */
    };

    options.ajax = {
        url: ajaxUrl,
        data: function(data) {
            // manipulate data used in ajax request prior to server call
            delete data.columns;
        }
    };

    $el.dataTable(options);

也可以通过 POST 发送查询以避免任何 URL 长度限制

$(document).ready(function() {
    $('#example').DataTable( {
        "processing": true,
        "serverSide": true,
        "ajax": {
            "url": "scripts/post.php",
            "type": "POST"
        }
    } );
} );

https://datatables.net/examples/server_side/post.html