抑制数据表ajax请求中不必要的参数?
Posted
技术标签:
【中文标题】抑制数据表ajax请求中不必要的参数?【英文标题】:Suppress unnecessary parameters in datatables ajax request? 【发布时间】:2015-07-15 16:32:15 【问题描述】:我正在使用带有ajax
和serverSide
选项的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请求没有处理完毕前,下一个ajax请求先等待?