2013-04-11 48 views
2

我正在使用Jquery Datatables加載從服務器端通過ajax調用獲得的數據數組(aaData)。我不想一次拉出整個數據,而是每次用戶在Datatables分頁中單擊「prev」或「next」時,都需要進行一次加載數據的Ajax請求。對數據表中每個頁面的服務器端數據的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"); 
     } 
    }); 
    } 
    } 
); 

我也跟着數據表的server side processing以及但沒有任何工作。

回答

1

在datatables服務器端處理,每次點擊'prev'/'next'按鈕(同時過濾,排序等)呼叫請求(開箱即用)sAjaxSource屬性中指定的功能 - 您可以在您的瀏覽器控制檯

調用有很多有用的參數。您需要在您的功能中使用iDisplayLengthiDisplayStart,以便將iDisplayStartiDisplayStart+iDisplayLength之間的一組數據剪切(排序和過濾後)。

您當然應該更改您的代碼結構,您可以在datatables documentation中看到 - 定義datatables初始化代碼並在sAjaxSource屬性中指示ajax源。

+0

我有一個數組列表的字符串數組列表(基本上我的aaData),我從數據庫中獲取數據並通過它循環後填充,一旦我的aaData被填充,其顯示在表中。我怎樣才能修改我的代碼,使事情工作? (BacklogVO obj:backlogVO){ ArrayList row = new ArrayList (); row.add(addActionColumn()); row.add(obj.getTask()); row.add(obj.getTaskType()); row.add(obj.getOwnedBy()); row.add(obj.getStatus()); row.add(obj.getPriority()); aaData.add(row); }」 – 2013-04-12 04:57:06

+0

這裏是例如用於JSON格式:http://datatables.net/release-datatables/examples/server_side/post.html – 2013-04-12 07:08:48

+0

服務器響應該我得到的是這個 '{ 「aaData」:[ [ \t \t 「, \t \t 」AB MIDT的數據處理「, \t \t 」售前「, \t \t 」Kuldeep辛格「, \t \t 」2013年11月4日「, \t \t」 17-04 -2013「, \t \t 「WIP」, \t \t 「高」 \t \t] \t] }' 但是還是我不能把它適合我的需要。我對數據表的瞭解是,它將整個數據存儲在瀏覽器的內存中,並且由於它具有整個數據,所以分頁,排序和過濾性能非常快。我需要在每個分頁號碼點擊一個ajax呼叫,告訴服務器每次帶來25條記錄。這怎麼能實現? – 2013-04-12 07:33:49