2

我正在使用 Jquery Datatables 从服务器端加载通过 ajax 调用获得的数据数组(aaData)。我不想一次提取全部数据,而是每次用户在 Datatables 分页中单击“上一个”或“下一个”时都需要发出 ajax 请求来加载数据。

这是如何实现的?我只想为该页面进行 ajax 调用并即时获取结果。

下面是我正在拨打电话的 javascript 代码。

$.ajax({              
 type: "GET",
 url: "ajaxBacklog",
 contentType: 'application/json',
 data: null,
 dataType: 'json',
 success: function(json){                  
     oTable = $("#backlogTable").dataTable({
         "aaData": json.aaData,
         "bProcessing": true,
         "bServerSide": true,
         "sPaginationType": "full_numbers",
         "bJQueryUI": true,
         "bRetrieve": true,
         "bPaginate": true,
         "bStateSave": true,
         "bSort": true,
         "aaSorting": [[ 4, "desc" ]],
         "iDisplayLength": 25,
         "oLanguage": {
                 "sProcessing": "<img src='resources/images/loader.gif'/>",
                 "sEmptyTable": "No records found."
             },
         "aoColumns": [
             { "sClass": "alignCenter"},
             { "sClass": "left"},
             { "sClass": "left"},
             { "sClass": "left"},
             { "sType": 'date-uk', "sClass":"datecolumn"},
             { "sType": 'date-uk', "sClass":"datecolumn"},
             { "sClass": "left"},
             { "sClass": "left"}
         ],
         "error": function() {
             alert("Failed to load Data");
         }
     });
    }
   }
);

我也遵循了数据表的服务器端处理,但没有任何效果。

4

1 回答 1

1

在数据表服务器端处理中,每次单击“上一个”/“下一个”按钮(也包括过滤、排序等)调用请求(开箱即用)到sAjaxSource属性中指定的功能 - 您可以在浏览器控制台中检查此调用。

调用有很多有用的参数。您需要在您的函数中使用iDisplayLengthandiDisplayStart将您的数据集从 剪切(排序和过滤后)iDisplayStartiDisplayStart+iDisplayLength

您当然应该更改代码结构,如您在数据表文档中看到的那样- 定义数据表初始化代码并在sAjaxSource属性中指示 ajax 源。

于 2013-04-11T12:18:47.677 回答