2017-05-09 101 views
-1

dataTable的默認行爲是好的,只要行數不是907234.我想使用面向Ajax的工作方式,所以每頁得到10條記錄等等。我知道我可以設置AJAX源碼,但只有一次,然後尋呼將是未來。 (如果datatable不知道記錄的數量,它將如何工作),更不用說搜索了。那麼如何開始?如何創建一個完全基於AJAX的jQuery-dataTable?

+1

我會盡力給你一個在線工作鏈接。 –

回答

2

DataTable的服務器側的方法是像這樣:

$('#dataTable').dataTable({ 
    "sServerMethod": "GET", 
    "bProcessing": true, 
    "bServerSide": true, 
    "sAjaxSource": "data.php", 
    "aoColumns": [null, null, null, { "bSortable": false }], 
    "order": [[ 1, "asc" ]], 
    "oLanguage": {"sZeroRecords": "No Members found", "sEmptyTable": "No members to display"}, 
}); 

即data.php應該像這樣後端:

<?php 
      $start = $_GET['iDisplayStart']; 
      $length = $_GET['iDisplayLength']; 
      $sSearch = $_GET['sSearch']; 
      $col = $_GET['iSortCol_0']; 
      $arr = array(1 => 'oe.org_given_id', 2 => 'usr.name'); 
      $sort_by = $arr[$col]; 
      $sort_type = $_REQUEST['sSortDir_0']; 

      $query = "SELECT usr.id,usr.name,oe.org_given_id FROM users usr JOIN organization_employees oe on usr.id=oe.employee_id WHERE oe.organization_id=".$organization_id." AND (usr.name LIKE '%".$sSearch."%' OR oe.org_given_id LIKE '%".$sSearch."%') ORDER BY ".$sort_by." ".$sort_type." LIMIT ".$start.", ".$length; 
      $db=new DB(); 
      $resultSet=$db->SelectRead($query); 
      while($row = mysqli_fetch_assoc($resultSet)) 
      { 
       $data[] = $row; 
      } 
      $counterQuery = "SELECT COUNT(usr.id) as total FROM users usr JOIN organization_employees oe on usr.id=oe.employee_id WHERE oe.organization_id=".$organization_id.";"; 
      $countSet = $db->SelectRead($counterQuery); 
      $iTotal=0; 
      while($counterRow = mysqli_fetch_assoc($countSet)) 
      { 
       $iTotal = $counterRow['total']; 
      } 
      $rec = array(
       'iTotalRecords' => $iTotal, 
       'iTotalDisplayRecords' => $iTotal, 
       'aaData' => array() 
      ); 
      $k=0; 
      if (isset($data) && is_array($data)) 
      { 
       foreach ($data as $item) 
       { 
       $rec['aaData'][$k] = array(
             0 => $k, 
             1 => $item['org_given_id'], 
             2 => $item['name'], 
             3 => "Delete" 
            ); 
       $k++; 
       } 
      } 
      header("Content-type:application/json"); 
      echo json_encode($rec); 
?> 

的參數,如: iDisplayStartiDisplayLength等是默認由Datatables給出。

一些在線工作的例子是:

https://coderexample.com/datatable-demo-server-side-in-phpmysql-and-ajax/ http://phpflow.com/php/datatables-example-server-side-processing-with-php/ http://phpflow.com/demo/datatable/

的我的代碼的github倉庫下面是offcourse一些附加功能:

https://github.com/shaktiphartiyal/DataTable-Editor-Free

相關問題