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

时间:2016-04-12 19:37:11

标签: javascript jquery ajax datatables

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

  1. 从函数GetData1
  2. 获取数据
  3. 检索数据后,将该数据存储在var dataQuery1
  4. 从函数GetData2
  5. 获取数据
  6. dataQuery1行添加到表格
  7. 从函数GetData1获取数据需要一段时间。因此,dataQuery1 [dataQuery1.length显示为零]中没有数据存储。我以为drawCallback应该照顾这个。相反,我得到错误:

      

    无法读取未定义的属性“数据”。

    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?

1 个答案:

答案 0 :(得分:0)

为了他人的利益分享我的最终解决方案。

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" }
                ]
            });
        });