0

在将 serverSide 参数设置为 true 时,我无法在 dataTable 中添加(因此显示)行。我正在使用以下代码。在控制台上打印向我显示了所需的结果,行没有填充数据。在代码中给出的函数 build_falt_data 中,我需要对代码进行一些处理,并在将其显示在数据表中之前针对列值添加自定义按钮。

我也遇到了一个奇怪的问题。响应显示为无限循环。请查看代码中的注释。我无法弄清楚背后的原因。任何帮助将不胜感激。

     var self = $(this)
      var datatable =  $('#example').dataTable( {
            "processing": true,
            "serverSide": true,
            "ajax": {
                "url": '/get_json_data.json',
                "method":"GET",
                success: function(data) {
                    //Method 1
                    console.log in build_falt_data shows results in infinite loop
                    datatable.fnAddData(self.build_falt_data(data));
                    // Method 2
                    var falt = self.build_falt_data(data);
                    //console.log(falt) yeilds true results with out loop repitition but unable to show the results in datatable rows
                    datatable.fnAddData(falt);
                },
                dataType: 'json'
            }
       });

      "build_falt_data": function( faltdata ) {
           falt_data = {};
           $.each( faltdata.data, function(index, faltList ) {
              falt_data.push(faltList.var1);
              falt_data.push(faltList.var2);
              falt_data.push(faltList.var3);
           });
           // In method 2 only, I am returning this array
           return falt_data;
      }
4

1 回答 1

0

您的代码存在多个问题,但主要原因是您可能不应该使用在事件处理程序fnAddData()中将数据添加到表中。success

您的代码可以简化如下所示。

var datatable = $('#example').dataTable({
   "processing": true,
   "serverSide": true,
   "ajax": "/get_json_data.json",
   "columns": [
      {"data": "var1"},
      {"data": "var2"},
      {"data": "var3"}
   ]
});
于 2015-04-26T14:19:58.563 回答