我正在使用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});
的操作?
答案 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);
}
});