【问题标题】:Suppress unnecessary parameters in datatables ajax request?抑制数据表ajax请求中不必要的参数?
【发布时间】:2015-07-15 16:32:15
【问题描述】:

我正在使用带有ajaxserverSide 选项的jquery 数据表插件。 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 列时,这会创建一个非常长的查询字符串。事实上,我在我的网络服务器中遇到了 url 长度限制。

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

【问题讨论】:

标签: jquery ajax datatables query-string


【解决方案1】:

我想出了一个不错的方法来解决这个问题。 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);

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-11-27
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-13
      • 2012-06-14
      • 2011-04-01
      相关资源
      最近更新 更多