寻找合适的方法来组合JQuery DataTable和Ajax调用

时间:2016-02-09 17:37:32

标签: jquery ajax datatables out-of-memory

我最近使用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服务器进行通信。

1 个答案:

答案 0 :(得分:-1)

您的内存不足错误表明,在服务器端,正在发出的查询将返回表中的所有数据,而不仅仅是页面。

您可能会发现将.NET包装器用于Datatables库会很有帮助:http://aspdatatables.azurewebsites.net/

提供

  • 模型绑定的MVC infranstructure
  • viewmodel用于定义表的设置,呈现和插件配置
  • 用于将数据表映射到IQueryable数据源的绑定

enter image description here