2012-11-21 126 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