在服务器端分页上防止来自jquery数据表的多个ajax调用

时间:2018-11-13 15:33:40

标签: javascript jquery ajax asp.net-mvc datatables

我有一个jquery dataTable,它使用ajax向MVC控制器发送请求并显示数据。 它可以在客户端处理中很好地工作,但是响应时间太慢,因为它会检索所有记录。

为使其更快,需要服务器端分页。 服务器端分页的问题在于,在jquery数据表中将服务器端分页设置为true会发出多个ajax请求。

我已经对其进行了大量调试,但无法弄清楚导致多个ajax请求的问题。我已经实现了Google提供的许多不同方式,但没有任何效果。

如何使用服务器端分页使其工作? 如何防止多次ajax调用? (表在document.ready()下初始化)

document.ready(function() {

            $("#myTable").DataTable({
            "processing": true, // for show progress bar
            "serverSide": true, // for process server side
            "orderMulti": false, // for disable multiple column at once
            "ajax": {
                "url": "/home/LoadData",
                "type": "Get",
                "datatype": "json"
                "data":{ date:'date'},// parameter on controller to filter records 
            },
            "columns": [
                    { "data": "ContactName", "name": "ContactName", "autoWidth": true },
                    { "data": "CompanyName", "name": "CompanyName", "autoWidth": true },
                    { "data": "Phone", "name": "Phone", "autoWidth": true },
                    { "data": "Country", "name": "Country", "autoWidth": true },
                    { "data": "City", "name": "City", "autoWidth": true },
                    { "data": "PostalCode", "name": "PostalCode", "autoWidth": true }
            ]
        });

第一次调用返回的数据正是我想要的,但是多次请求使情况变得更糟。

1 个答案:

答案 0 :(得分:0)

即使我已经为ajax成功方法定义了列定义,我仍将数据添加到表中。 删除成功方法可以解决问题。