2012-11-21 162 views
0

我有一個代碼:數據表服務器端處理

function prepareListCustomer() { 
    var req; 
    req = new AjaxAdapter; 
    req.dataType = 'json'; 
    return req.query('GET', LIST_CUSTOMER_URL, {rowsOnPage: k, page: l}, function(responseServer, status, xhr) { 
     listCustomer = responseServer.dataListCustomer; 
     l = l + 1; 
     }, function(jqXHR, textStatus, errorThrown) { 
      var exception; 
      exception = jQuery.parseJSON(jqXHR.responseText); 
      return showError(exception); 
     }); 
} 

function prepareDataTable() { 
    $('#displayData').dataTable({ 
     "bProcessing": true, 
     "bServerSide": true, 
     "sAjaxSource": LIST_CUSTOMER_URL 
     "fnServerData": function (sSource, aoData, fnCallback, oSettings) { 
      oSettings.jqXHR = $.ajax({ 
      "dataType": 'json', 
      "type": "GET", 
      "url": LIST_CUSTOMER_URL, 
      "data": {rows: k, pages: l}, 
      "success": prepareListCustomer 
      }); 
     } 
     }); 
} 

功能prepareListCustomer()將數據寫入到listCustomre。我想在prepareDataTable中顯示這些數據,怎麼樣? 我想使用服務器端處理。在listCustomer我喜歡JSON:

{ 
    "rowsPerPage": 10, 
    "page": 1, 
    "total": 100, 
    "rows": [ 
     { 
      "id": 1, 
      "name": "nazwa1" 
     }, 
     { 
      "id": 2, 
      "name": "nazwa2" 
     }, 
     { 
      "id": 3, 
      "name": "nazwa3" 
     } 
    ] 
} 

我讀書http://datatables.net/examples/data_sources/server_side.html但我不知道如何實現我的代碼?

回答

1

您的JSON看起來不像默認。

如果您使用該JSON,則需要在sAjaxSource屬性之後像這樣在javascript調用中聲明每一列。

"aoColumns": [ 
    { "mDataProp": "DBColumn1" , "bSortable":true, "bVisible": false }, 
    { "mDataProp": "DBColumn2" , "bSortable":true, "bVisible": false }, 
    { "mDataProp": "DBColumn3" , "bSortable":true, "bVisible": false } 
] 

另外,JSON,這部分是不正確

"rowsPerPage": 10, 
"page": 1, 
"total": 100, 
"rows": 

它應該是這樣的

"sEcho": 1, 
"iTotalRecords": 100, 
"iTotalDisplayRecords": 10, 
"aaData": 

如果你看一下你的貼吧鏈接上的PHP示例生成此標題在這裏並將它們放入一個關聯數組中。

/* 
* Output 
*/ 
$output = array(
    "sEcho" => intval($_GET['sEcho']), 
    "iTotalRecords" => $iTotal, 
    "iTotalDisplayRecords" => $iFilteredTotal, 
    "aaData" => array() 
); 

然後開始編碼之前加載所有數據轉換成數組JSON

while ($aRow = mysql_fetch_array($rResult)) 
{ 
    $row = array(); 
    for ($i=0 ; $i<count($aColumns) ; $i++) 
    { 
     if ($aColumns[$i] == "version") 
     { 
      /* Special output formatting for 'version' column */ 
      $row[] = ($aRow[ $aColumns[$i] ]=="0") ? '-' : $aRow[ $aColumns[$i] ]; 
     } 
     else if ($aColumns[$i] != ' ') 
     { 
      /* General output */ 
      $row[] = $aRow[ $aColumns[$i] ]; 
     } 
    } 
    $output['aaData'][] = $row; 
} 

echo json_encode($output); 

和你的JSON應該是這個樣子

{ 
    "sEcho":8, 
    "iTotalRecords":1, 
    "iTotalDisplayRecords":1, 
    "aaData":[ 
     { 
     "Entity_Id":840982, 
     "External_Id":"1", 
     "Family_Name":"A", 
     "First_Name":"A", 
     "Prefix_Title":null, 
     "Suffix_Title":null 
     } 
    ] 
} 

這裏有一個全面的解釋上DataTables.net