サーバーサイド処理を使用して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ページしかないことがわかります。
recordsFiltered
は、ページ上のレコードの数ではなく、検索ボックス(および他のフィルター)を通過するレコードの数を表すことになっています。
関連するレコードが10個しかないことをDataTablesに伝えているので、他の13個のページングを設定しようとしません。
詳細については、3番目のDataTables FAQ post (サーバー側の処理カテゴリ内)、またはその記事にリンクされている Server-side processing ページを参照してください。
主にrecordsFiltered
は、ページネーションを作成するために機能しています。したがって、このパラメーターにテーブル内のデータの総数を渡しますrecordsFiltered
例: A)ユーザーテーブルの合計レコード100 B)検索/デフォルト/一致する行70 C)ページごとに表示される制限された行は10です。したがって、recordsTotal => C recordsFiltered = B
主にrecordsFilteredがページネーションを作成するために機能しています