【发布时间】:2021-12-06 12:08:24
【问题描述】:
我正在尝试使用对象数组创建和填充 jQuery 数据表,其中每个对象都有两个属性:HR 和 TXN_COUNT。它表示每小时的交易数量,看起来像:
HR TXN_COUNT
00 4591
01 2402
...
08 2129
我需要第一列的内容作为数据表列标题,第二列作为数据,这样我最终会得到:
00 01 ... 08
4591 2402 2129
无法让它工作。
我试过这个:
<div id="divGrid" style="clear: both">
<table id="txnTable" class="table table-striped table-bordered table-hover display responsive compact divGrid " style="width: 98%;">
</table>
</div>
...
$(document).ready(function () {
...
populateTable();
});
function populateTable() {
$.ajax({
type: "POST",
dataType: "json",
contentType: "application/json; charset=utf-8",
url: "../WebService/ABC.asmx/GetTransactionCountByDay",
cache: false,
data: JSON.stringify({ SelDate: selDate, LogType: -1 }),
}).done(function (result) {debugger
var jResult = JSON.parse(result.d);
//columnNames = jResult.map(a => a.HR);
// Stupid IE version, since it doesn't understand '=>' !
columnNames = jResult.map(function (a) { return a.HR; });
tblData = jResult.map(function (a) { return a.TXN_COUNT; });
$('#txnTable').DataTable({
destroy: true,
processing: true,
serverSide: true,
data: tblData,
columns: columnNames
});
})
}
当我运行它时,我在 columnNames 和 tblData 数组中看到了正确的值。但是,我在函数“isArrayLike(obj)”中得到 jquery 错误(Invalid operand to 'in': Object expected),其中对象是字符串“00”(第一个 HR 值)。当我继续这个过程时,我只看到我的“等待”微调器在旋转,没有任何显示。在创建数据表时会发生这种情况。
更新
在创建数据表之前添加这段代码至少会显示表头。似乎数据表的“列”属性需要对象,而我正在传递字符串(例如“00”)。
for (var i in columnNames) {debugger
columns.push({
data: columnNames[i],
title: columnNames[i]
});
}
然后将“column”属性设置为columns 而不是columnNames。 现在我在数据表的 js 中遇到错误(无法设置未定义或空引用的属性“数据”)
【问题讨论】:
-
什么不像预期的那样工作?
-
我编辑了问题以解释发生了什么。
-
您能否向我们展示从 URL 返回的 JSON 响应(格式文本)?有代表性的样本就可以了,但我们确实需要查看 JSON 的整体结构。
-
您正在使用
serverSide: true,这意味着您的服务器端代码将处理所有排序、分页和过滤(DataTables 不会处理任何这些)。您的服务器端代码会这样做吗?此外,如果您使用serverSide: true,则需要使用DataTables Ajax 选项,而不是jQuery 的$.ajax- 否则,DataTables 将无法将所需的分页/排序/过滤参数传递给服务器。 -
[{\"DT\":\"2021-10-19\",\"HR\":\"00\",\"TXN_COUNT\":138.0},{\" DT\":\"2021-10-19\",\"HR\":\"01\",\"TXN_COUNT\":235.0},{\"DT\":\"2021-10-19\ ",\"HR\":\"02\",\"TXN_COUNT\":111.0},{\"DT\":\"2021-10-19\",\"HR\":\"03\ ",\"TXN_COUNT\":120.0},{\"DT\":\"2021-10-19\",\"HR\":\"04\",\"TXN_COUNT\":120.0},{ \"DT\":\"2021-10-19\",\"HR\":\"05\",\"TXN_COUNT\":120.0},{\"DT\":\"2021-10- 19\",\"HR\":\"06\",\"TXN_COUNT\":318.0},{\"DT\":\"2021-10-19\",\"HR\":\" 07\",\"TXN_COUNT\":505.0},{\"DT\":\"2021-10-19\",\"HR\":\"08\",\"TXN_COUNT\":294.0} ]
标签: jquery datatables