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

Posted

技术标签:

【中文标题】抑制数据表ajax请求中不必要的参数?【英文标题】:Suppress unnecessary parameters in datatables ajax request? 【发布时间】: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 长度限制。

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

【问题讨论】:

https://datatables.net/forums/discussion/6535/simpler-shorter-urls-for-server-side-datatables 【参考方案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

【讨论】:

以上是关于抑制数据表ajax请求中不必要的参数?的主要内容,如果未能解决你的问题,请参考以下文章

ajax/jquery POST 请求的不必要重复

有没有方法可以使得前一个ajax请求没有处理完毕前,下一个ajax请求先等待?

使用新参数重新加载 Ajax 请求

如何在浏览器中查看ajax请求的url和参数

Ajax相关(原生ajax,jQuery中ajax,axios)

$.ajax(),$.get(),$.post()的区别,以及一些参数注意规则