有没有办法阻止它将所有列发送到服务器?
目前,AJAX请求如下:
?ssp.php绘制= 2及列%5B0%5D%5Bdata%5D = ID&安培;柱%5B0%5D%5Bname%5D =安培;为了%5B0%5D%5Bcolumn%5D = 10&安培;为了%5B0 %5D%5Bdir%5D = ASC&安培;开始= 0&安培;长度= 10安培;搜索%5Bvalue%5D =安培;搜索%5Bregex%5D =假安培; _ = 1448240832750
但它的长度为5689个字符。我正在寻找一种方法来禁用所有不必要的列数据。这可能吗?
答案 0 :(得分:13)
您可以通过POST发送它,因此这些字段都不会出现在发送到您服务器的URL上。以下是docs:
中的一个示例$(document).ready(function() {
$('#example').DataTable( {
"serverSide": true,
"ajax": {
"url": "scripts/post.php",
"type": "POST"
},
};
});
答案 1 :(得分:3)
如果您使用GET
尝试删除不必要的列。
$('#your-table').DataTable({
serverSide: true,
processing: true,
ajax: {
url: 'url-here',
data: function (data) {
for (var i = 0, len = data.columns.length; i < len; i++) {
if (! data.columns[i].search.value) delete data.columns[i].search;
if (data.columns[i].searchable === true) delete data.columns[i].searchable;
if (data.columns[i].orderable === true) delete data.columns[i].orderable;
if (data.columns[i].data === data.columns[i].name) delete data.columns[i].name;
}
delete data.search.regex;
}
}
})
答案 2 :(得分:2)
使用可以抑制不必要的参数,例如下面的方式:
"ajax":{
url :"admin/customers/ajax_datatables",
type: "get",
data: function ( data) {
delete data.columns; // <-- too long and not neccessary if you don't use
//and you can add more data
data.form_search_params = $("#frm_search").serializeFormJSON();
},
error: function (xhr, error, thrown) {
console.log(xhr);
}
},
答案 3 :(得分:1)
https://datatables.net/examples/server_side/post.html 解决方案是使用post而不是GET
答案 4 :(得分:1)
使用delete删除您不想发送的字段。如下:
"ajax": {
"url": "yoururl",
"data": function (d) {
for (var i = 0, len = data.columns.length; i < len; i++) {
delete data.columns[i];
}
delete data.search.regex;
return $.extend({}, d, {
"filterOne": $('#mydropdown').val(),
});
},
"type": "GET",
},