У меня есть данные с процессом обработки серверных файлов. Данные взяты из ожидаемой таблицы, но она не является страницей по datatable. Я вижу, что в отладочной сумме 14 записей базы данных aaData, которая будет отображаться, равна 5, , поэтому я ожидаю, что будет 3 страницы .., но только 1 страница diplayed и 5 строк на странице.jquery datatable not pagiging за исключением первой страницы
вот мой табл HTML:
<table style="text-align: center" class="table table-striped table-bordered table-hover" id="usersTable">
<thead>
<tr>
<th>
User Name
</th>
<th>
Account
</th>
<th>
Enable
</th>
<th>
Remark
</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
и DataTable Защита:
var tableObject = $("#usersTable").dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "../../Controller/UserManagementControllercopy.php5",
"aoColumns": [
{ "mDataProp": "0", "sWidth": "40%", "bSearchable": false },
{ "mDataProp": "1", "sWidth": "20%"},
{ "mDataProp": "3", "sWidth": "20%" },
{ "mDataProp": "2", "sWidth":"20%" }
],
"fnServerData": function (sSource, aoData, fnCallback){
$.ajax({
"dataType": "json",
"contentType": "application/json; charset=utf-8",
"type": "GET",
"url": sSource,
"data": aoData,
"success": function(result){
fnCallback(result);
},
error: function (xhr, textStatus, error){
debugger
if (typeof console == "object") {
console.log(xhr.status + "," + xhr.responseText + "," + textStatus + "," + error);
}
}});
},
"oLanguage": {
"sLengthMenu": '<select>' +
'<option value="5">5</option>' +
'<option value="10">10</option>' +
'<option value="20">20</option>' +
'<option value="30">30</option>' +
'<option value="40">40</option>' +
'<option value="50">50</option>' +
'</select> Show'
},
"fnDrawCallback": function(){
},
"aaSorting": [
[1, 'asc']
],
"aLengthMenu": [
[5, 15, 20, -1],
[5, 15, 20, "All"] ],
"iDisplayLength": 5
});
и ServerCode:
$aColumns = array('USERNAME', 'ACCOUNT', 'REMARK', 'ENABLE');
$sQuery = " SELECT USERNAME,ACCOUNT,REMARK,ENABLE FROM users LIMIT ".$_GET['iDisplayStart'].", ".$_GET['iDisplayLength'].";";
$dbObject = Connection::getConnection();
$request = $dbObject->dbh->prepare($sQuery);
if ($request->execute())
{
$resultData["Data"] = $request->fetchAll(PDO::FETCH_ASSOC);
$sQuery = "SELECT COUNT(USERNAME) FROM users";
$request = $dbObject->dbh->prepare($sQuery);
$request->execute();
$iTotal = $request->fetchColumn(0);
$output = array(
"sEcho" => intval($_GET['sEcho']),
"iTotalRecords" => intval($iTotal),
"iTotalDisplayRecords" => intval($_GET['iDisplayLength']),
"aaData" => array()
);
for ($j=0 ; $j<count($resultData["Data"]) ; $j++)
{
$aRow = $resultData["Data"][$j];
$row = array();
$output["Success"]=true;
echo json_encode($output);
}
и здесь, как возвращаемые данные из запроса GET из DataTable, кажется, является : (хром панель для разработчиков)
@Vishan Привет , Я изменил код на серверном сервере так: ... «iTotalRecords» => intval ($ iTotal), «iTotalDisplayRecords» => intval ($ iTotal), ... И я вижу, что сейчас он отлично работает. Но я не могу понять, почему это работает сейчас :)) почему itotalrecords и itotaldisplayrecords должны быть одинаковыми? Или снова что-то мне не хватает –
@Mehmet Вам больше не хватает точки. Для вашего текущего кода он будет работать, поскольку вы не используете какой-либо фильтр. Но, если вы будете использовать какое-то условие фильтрации WHERE или Datatable Searchbox, вы снова не получите ожидаемый результат. См., Itotalrecords - это количество общих записей, которые у вас есть в базе данных для соответствующих таблиц, а itotaldisplayrecords - количество записей, которые вы получаете после фильтрации (например, если вы будете использовать поле поиска). – Vishal
Да, я понимаю. И теперь я удивляюсь этому; трижды запуская запросы (выберите count (*) из таблицы и выберите count (*) из таблицы, где ...) для itotalrecorads и itotaldispalyrecords. и (выберите column1, column2 .. из таблицы) для данных содержимого таблицы. Выполняя это, каждый запрос получает каждый раз переместить страницу в таблицу. Таким образом, это, по-видимому, вызывает проблемы с производительностью .. что является эффективным способом достижения этого. –