如何在检索到数据后使用drawCallback执行代码

How can I use drawCallback to execute code after data has been retrieved?

本文关键字:drawCallback 执行 代码 数据 检索      更新时间:2024-05-15

使用DataTables插件我试图做的是:

  1. 从函数GetData1获取数据
  2. 一旦检索到数据,就将该数据存储在var dataQuery1
  3. 从函数GetData2获取数据
  4. 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" }
                ]
            });
        });