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

时间:2015-05-05 19:20:12

标签: jquery ajax datatables query-string

我正在使用带有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

表格中的每一列都会继续。这在使用10列时会创建一个非常长的查询字符串。事实上,我在网络服务器中遇到了网址限制。

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

2 个答案:

答案 0 :(得分:14)

我找到了一个解决这个问题的好方法。 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);

答案 1 :(得分:0)

也可以通过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