以编程方式将AJAX数据加载到Datatable

时间:2017-10-02 05:19:41

标签: jquery datatable datatables

所以我有一个页面,当它第一次加载时,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行的查询,但这看起来并不太理想。

有什么想法吗?

1 个答案:

答案 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是否为真。如果是,则返回空数据。否则,返回请求的数据。