web-dev-qa-db-ja.com

jqueryデータテーブルのサーバー側ページネーションが機能しない

サーバーサイド処理を使用してphpプロジェクトに jquery datatables を実装しようとしていますが、ページネーションが機能せず、Firebugコンソールにエラーはありません。

ページはシンプルで簡単です。これがHTMLコードです。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=Edge">

  <link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/v/dt/jq-2.2.3/dt-1.10.12/datatables.min.css"/>
  <script type="text/javascript" src="https://cdn.datatables.net/v/dt/jq-2.2.3/dt-1.10.12/datatables.min.js"></script>

</head>

<body>
<table class="table">
  <thead>
  <tr>
    <th col-data="item_id">Item Id</th>
    <th col-data="name">Name</th>
  </tr>
  </thead>
</table>

<script type="text/javascript">

  $(document).ready(function() {
    var dataTable = $('.table').DataTable( {
      "processing": true,
      "serverSide": true,
      "buttons": [],
      "order": [],
      "ajax":{
        url :"{{ url('stock_acc_get') }}", // json datasource
        type: "post",
      }
    } );

  } );
</script>

</body>

</html>

これはサーバーに投稿されたデータです(firebugコンソールで表示)。

columns[0][data]        0
columns[0][name]    
columns[0][orderable]       true
columns[0][search][regex]   false
columns[0][search][value]   
columns[0][searchable]      true
columns[1][data]        1
columns[1][name]    
columns[1][orderable]       true
columns[1][search][regex]   false
columns[1][search][value]   
columns[1][searchable]      true
draw    1
length  10
search[regex]   false
search[value]   
start   0

そして、これがサーバーからのjson応答です:

{
  "draw":1,
  "recordsTotal":23,
  "recordsFiltered":10,
  "data": [
    ["100018","Test Acc"],["100019","Test Acc 2"],
    ["100020","Test Acc 3"],["5845645","Optional 1"],
    ["56456456","Optional 2"],["541515","Optional 3"],
    ["845812","Optional 4"],["103646","Belte Setesdal"],
    ["103647","Belte Setesdal"],["103681","Belte Sigdal-Eggedal"]
  ]
}

ページは10レコードを表示するように設定されています。レコードの総数は23であり、次のページに移動するためのリンクは作成されません。わかりやすくするために写真を添付し​​ました。[次へ]/[前へ]ボタンが無効になっていて、1ページしかないことがわかります。

enter image description here

7
Ceparu Stefan

recordsFilteredは、ページ上のレコードの数ではなく、検索ボックス(および他のフィルター)を通過するレコードの数を表すことになっています。

関連するレコードが10個しかないことをDataTablesに伝えているので、他の13個のページングを設定しようとしません。

詳細については、3番目のDataTables FAQ post (サーバー側の処理カテゴリ内)、またはその記事にリンクされている Server-side processing ページを参照してください。

16
Chris H.

主にrecordsFilteredは、ページネーションを作成するために機能しています。したがって、このパラメーターにテーブル内のデータの総数を渡しますrecordsFiltered

例: A)ユーザーテーブルの合計レコード100 B)検索/デフォルト/一致する行70 C)ページごとに表示される制限された行は10です。したがって、recordsTotal => C recordsFiltered = B

主にrecordsFilteredがページネーションを作成するために機能しています

0
FIROZUR