Javascript Datatable禁用搜索选项可搜索不工作

Javascript Datatable禁用搜索选项可搜索不工作,javascript,jquery,datatables,Javascript,Jquery,Datatables,这是我的代码,我正在尝试禁用所有列的搜索,但全局搜索除外。 这将始终搜索我定义的主键。使用datatable示例服务器端类 var datatable = $('#datatable').DataTable({ "ajax": "/get_data/", "processing": true, "serverSide": true, "deferRender": true, "columns": [

这是我的代码,我正在尝试禁用所有列的搜索,但全局搜索除外。 这将始终搜索我定义的主键。使用datatable示例服务器端类

var datatable = $('#datatable').DataTable({
        "ajax": "/get_data/",
        "processing": true,
        "serverSide": true,
        "deferRender": true,

        "columns": [
            {"searchable": false, "data": "id"},
            {"searchable": false, "data": "user_id"},
            {"searchable": true, "data": "bl_number"},
            {"searchable": false, "data": "invoice_number"},
            {"searchable": false, "data": "ship_date"},
            {"searchable": false, "data": "eta_date"},
            {"searchable": false, "data": "vessel"},
            {"searchable": false, "data": "port_of_load"},
            {"searchable": false, "data": "port_of_discharge"},
            {"searchable": false, "data": "containers"},
            {"searchable": false, "data": "status"}
        ],

        "initComplete": function(settings, json) {
            $(this).show();
        }
    });

    datatable.on('click', '.btn-edit', function(){
        var data = datatable.row($(this).closest('tr')).data();
        edit(data);
    });
如果我使用array而不是json对象,我可以使用下面的代码,它工作得很好。但我需要处理Json对象,而不是数组

var datatable = $('#datatable').DataTable({
    "ajax": "/get_data/",
    "processing": true,
    "serverSide": true,
    "deferRender": true,

    "columnDefs": [ 
        {
            "targets": 0,
            "render": function ( data, type, full, meta ) {
                return '<a href="javascript:;" class="btn-edit">Edit</a>';
            }
        },
        { targets: 1, searchable: true },
        { targets: '_all', searchable: false }
    ]
});

datatable.on('click', '.btn-edit', function(){
    var data = datatable.row($(this).closest('tr')).data();
    edit(data);
});
var datatable=$('#datatable')。datatable({
“ajax”:“/获取数据/”,
“处理”:对,
“服务器端”:正确,
“延迟渲染”:正确,
“columnDefs”:[
{
“目标”:0,
“呈现”:函数(数据、类型、完整、元){
返回“”;
}
},
{目标:1,可搜索:true},
{目标:''u all',可搜索:false}
]
});
datatable.on('click','btn edit',function(){
var data=datatable.row($(this).closest('tr')).data();
编辑(数据);
});

在数据表中使用服务器端处理时,一切都变成了手动操作。在php中的函数get_data中,您需要检索您试图搜索的值,并过滤您想要的列(在sql查询中)@Dacklf Datatable samples包含一个服务器端类,以及应用搜索的前端发送列上的Datatable。默认情况下,它发送所有列。我需要一个,正如您在我提供的代码中看到的那样,它是有效的。好吧,我不知道这是否是问题所在,但在您的第二个代码示例中,您的目标是“1”和“全部”。首先让“1”可搜索,然后让“\u all”不可搜索。也许第二个目标也使“1”无法搜索。所以试着改变顺序。第二个例子很好用。这是文档中记录的预期方式。这些规则从上到下按优先级运行。我需要关于使用第1个示例或json对象而不是数组的相同实现的帮助。