我最近使用jQuery DataTable插件在我的网站上生成结果。我发现datatables.net提供服务器端功能来生成一个带Ajax调用的表(我的是JSON类型)。现在我分别使用Ajax调用和DataTable插件,但有时如果我请求可以从SQL数据库返回超大型数据集的Ajax调用,则jQuery DataTable无法处理它或抛出OutOfMemoryExeception。这是我的Ajax和DataTable代码,并且都正常工作:
$.ajax({
cache: false,
type: "POST",
datatype: 'json',
url: "url/url",
data: {
"Data1": data1,
"Data2": data2,
"Data3": data3,
"Data4": data4,
"Data5": data5,
...
},
success: function (data) {
var DataTable = $('#DataTable').dataTable({
data: data,
dom: '<"top"Bif>rt<"bottom"lp><"clear">B',
buttons: [
'excel', 'pdf'
]
}
);
},//end success
error: function (xhr, ajaxOptions, throwError) {
alert('failed')
}//end error
});//end ajax
我正在寻找一种在DataTable函数中放置ajax调用的方法,并使用deferLoad()
之类的功能在生成完整数据表时处理部分数据行。以下是我尝试遵循datatables.net示例的概念:
var DataTable = $('#DataTable').dataTable({
"serverSide": true,
"ajax": {
"url": "data.json",
"type": "POST",
"data":{
"Data1": data1,
"Data2": data2,
"Data3": data3,
"Data4": data4,
"Data5": data5,
...
}
}
"dataSrc": data,// I can't get a callback data from this code.
"deferLoading":10,
dom: '<"top"Bif>rt<"bottom"lp><"clear">B',
buttons: [
'excel', 'pdf'
]
});
但它没有以这种方式工作,它甚至没有向服务器端发出Ajax调用。有人可以帮助我使这段代码正确吗?
顺便说一句,我使用ASP.Net MVC控制器作为中间层与Ajax和SQL服务器进行通信。
答案 0 :(得分:-1)
您的内存不足错误表明,在服务器端,正在发出的查询将返回表中的所有数据,而不仅仅是页面。
您可能会发现将.NET包装器用于Datatables库会很有帮助:http://aspdatatables.azurewebsites.net/
提供