动态数据表创建

时间:2017-08-30 13:34:30

标签: javascript jquery jquery-ui datatables

我正在使用HTTP GET url,它以下列格式返回JSON中的数据:

reverse(
    substring(
        reverse([Column 1]), 
        patindex('%[0-9]%', reverse([Column 1])), 
        patindex('%[^0-9]%', substring(
                                 reverse([Column 1]), 
                                 patindex('%[0-9]%', reverse([Column 1])), 
                                 1000) + 'x'
                             ) - 1
    )
) lastNumericPart

我可以通过像这样调用jQuery sync get来创建jQuery dataTable

{
  "columnDefs": [{
    "colIdentifier": "col1",
    "title": "abc"
  },{
    "colIdentifier": "col2",
    "title": "xyz"
  }],
  "data": [{
    "col1": "data1",
    "col2": "data2"
  }]
}

之后我正在处理var api_data; $.ajaxSetup({ async: false }); $.get("/getTableData", {}, function(data, status) { api_data = data; }); $.ajaxSetup({ async: true }); 以创建jQuery dataTable api_data和aaData属性。

这种方法的问题是我必须使用aoColumnDefs来实现相同的目标。

无论如何我可以使用dataTable“fnServerData”属性使其异步吗?

是否可以在fnServerData函数中获取http数据,然后在其中执行类似$.ajaxSetup({async: false});的操作?

1 个答案:

答案 0 :(得分:0)

为什么需要使请求同步?

我有一个应用程序,在各个选项卡上有大量数据表,如果用户切换到尚未加载数据的选项卡,则在选项卡激活功能中,我会启动异步$ .ajax请求服务器为其获取数据。

在$ .ajax调用中,我定义了一个成功函数,该函数将在下载数据后调用,这将在任何所需的数据处理之后初始化数据表(我构建了大量自定义过滤器,以及做一大堆额外的处理)

像这样的简化版本:

$.ajax({
    type: "POST",
    url: "/getTableData",
    data: JSON.stringify({ param1: value1 }),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {
        var results = response.d;
        DataTableInit(results);
    },
    failure: function (msg) {
        $('#TableLocation).html("Error: Unable to fetch data: " + msg);
    }
});