DataTables服务器端处理URL太长

the*_*124 7 datatables

有没有办法阻止它将所有列发送到服务器?

目前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个字符.我正在寻找一种方法来禁用所有不必要的列数据.这可能吗?

Mar*_*rio 16

您可以通过POST发送它,因此这些字段都不会出现在发送到您服务器的URL上.以下是文档中的示例:

$(document).ready(function() {
    $('#example').DataTable( {
        "serverSide": true,
        "ajax": {
            "url": "scripts/post.php",
            "type": "POST"
        },
    };
});
Run Code Online (Sandbox Code Playgroud)


Hoà*_*ăng 9

如果您使用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;
    }
  }
})
Run Code Online (Sandbox Code Playgroud)


小智 5

use 可以抑制不必要的参数,如下所示:

"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);
        }
    },
Run Code Online (Sandbox Code Playgroud)