使用DataTables插件我试图做的是:
- 从函数
GetData1
获取数据 - 一旦检索到数据,就将该数据存储在
var dataQuery1
中 - 从函数
GetData2
获取数据 - 将
dataQuery1
行添加到表
从函数GetData1
获取数据需要一段时间。因此,dataQuery1
中没有存储任何数据[dataQuery1.length显示为零]。我以为drawCallback
应该处理好这件事。相反,我得到了错误:
无法读取未定义的属性"data"。
var resourcetable = $('#table').DataTable({
"ajax": {
"url": "QueryDataService.asmx/GetData1",
"dataSrc": ""
},
"columns": [
{ "data": "Column1" },
{ "data": "Column2" },
{ "data": "Column3" }
],
"drawCallback": function (settings) {
var dataQuery1 = resourcetable.data(); //Point of Failure
alert('The table has ' + dataQuery1.length + ' rows');//Shows zero rows
resourcetable.ajax.url("QueryDataService.asmx/GetData2").reload();
resourcetable.rows.add(data).draw()
});
在步骤1完成后,是否有任何方法可以执行步骤2、3、4?
为了他人的利益共享我的最终解决方案。
var set1 = $.ajax({
url: "Url1.asmx/GetData1",
type: "GET",
dataType: "json"
});
var set2 = $.ajax({
url: "Url2.asmx/GetData2",
type: "GET",
dataType: "json"
});
$.when(set1, set2).done(function (dataset1, dataset2) {
var data = $.merge(dataset1[0], dataset2[0]);
$('#table').DataTable({
"aaData": data,
"aoColumns": [
{ "data": "Column1" },
{ "data": "Column2" },
{ "data": "Column3" }
]
});
});