来自AJAX Source的JQuery Datatables行数据

时间:2015-03-04 19:17:59

标签: javascript jquery ajax jquery-datatables

在过去,我一直用这个来获取隐藏列的数据。我会用css类隐藏列,但响应功能对这些不起作用。

var td = $('td', this);
var ID = $(td[0]).text();

所以我找到了另一种选择,通过使用响应特征隐藏这些类的列。

"columnDefs": [
    //Responsive classes
    { className: 'never', targets: 0 }, //Hide on all devices
    { className: 'all', targets: 1 },   //Show on all devices
]

然后我使用其中任何一个。

var rowData = oTable1.fnGetData(this);
var rowData = oTable1.api().row(this).data();

//Grab the first indexed item in the list
var ID = rowData[0];

如果您没有AJAX源,那么效果很好。它将返回以逗号分隔的行数据列表。但是,当我尝试将其与AJAX源一起使用时,如果我在警报中输出rowData变量,我只会返回[object Object](而不是以逗号分隔的列表)。

如何从包含AJAX源的表中获取行数据?

3 个答案:

答案 0 :(得分:1)

它似乎存储为字符串,因此当您将其转换为字符串时,[1,2,3]变为[对象对象]。执行yourString = yourList.join(',')并存储yourString以保持逗号分隔的字符串。

对象:

yourString = (function () {
  var list = [];
  for(var i in yourList)
    if(yourList.hasOwnProperty(i))
      list.push(yourList[i]);
  return list.join(',');
})();

不需要该功能,只是限制变量范围。

答案 1 :(得分:0)

我最终使用了我在这里找到的答案。 Converting a JS object to an array

我可以用这个从表中提取整个行数据。

 var rowData = oTable1.api().row(this).data();

在控制台日志中,我可以看到它返回一个像这样的javascript对象。

 Object { id="123456", full_name="Samuel Smith", Last_name="Smith" }

我使用此函数将对象转换为数组。

var array = $.map(rowData, function (value, index) {
        return [value];
    });

在控制台日志中,我的数组将如下所示。

["123456", "Samuel Smith", "Smith"]

然后,我可以像这样从数组中提取任何项目。

alert(array[0]);

答案 2 :(得分:0)

简化madvora的例子:

var rowData = oTable1.api().row(this).data().to$();
rowDataArray = rowData.toArray();