所以我有一个页面,当它第一次加载时,Datatable应为空。但是当用户单击搜索时,Datatable将使用JSON源加载数据。
初始化时,我尝试发送"零"我的控制器的参数,然后将返回空数据。
siInfoTable = $('#siInfoTable').DataTable({
"ajax":{
"url":"http://localhost:9000/milestone/api/si_info/all",
"data": function(d){
d.zero=true;
}
})
然后,当用户点击搜索时,我尝试这样的事情,但它不起作用。
siInfoTable.ajax({
"data": function(d){
//New parameters here
}
});
我也尝试了其他方法,但我只能配置一次数据表的AJAX。我想过只使用pageLength
运行一个询问0行的查询,但这看起来并不太理想。
有什么想法吗?
答案 0 :(得分:0)
根据@annoyingmouse的评论,deferLoading将是服务器端处理数据表的方式。但就我而言,我不会出于某种原因使用服务器端处理。这就是我所做的:
var zero = true;
siInfoTable = $('#siInfoTable').DataTable({
"ajax":{
"url": url+"/api/si_info/all",
"data": function(d){
d.zero= zero;
}
}
});
我的原始代码问题是我只能初始化数据表的AJAX一次。因此,作为一个解决方案,我设置了一个zero
布尔变量,而不是我将发送到服务器端的true
参数的实际d.zero
值。因此,如果我需要向服务器发送false
zero
参数,我只需在运行AJAX重新加载之前更改变量的值:
zero = false;
$("#siInfoTable").ajax.reload();
对于服务器代码,我只检查zero
是否为真。如果是,则返回空数据。否则,返回请求的数据。