如何解决使用服务器端时搜索和分页不起作用 问题解决方案
我正在服务器端使用数据表。我正在使用ajax获取记录。我的问题是,搜索和分页不起作用。我正在获取搜索和分页以及所有数据。
请检查下图,我每页显示10条记录,但显示全部。
我在StackOverflow上检查了有关此主题的服务器问题。我几乎检查了每个问题,但仍然找不到解决方法。
我正在使用以下代码
if($_REQUEST['action']=='adminList'){
$stmt = $pdo->prepare("SELECT count(*) FROM tbl_admin");
$stmt->execute();
$totalRecords = $stmt->fetchColumn();
$query="SELECT `admin_id`,`a_firstname`,`a_lastname`,`a_email`,`date_of_created` FROM `tbl_admin` WHERE is_active = 1 order by date_of_created DESC";
try {
$stmt = $pdo->prepare($query);
$stmt->execute();
$result = $stmt->fetchAll();
$data['data'] = [];
foreach ($result as $row) {
$arr_result = array(
//"id" =>$i++,"name" =>$row['a_firstname'].' '.$row['a_lastname'],"email" => $row['a_email'],"date_of_created" => $row['date_of_created'],);
$data['data'][] = $arr_result;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$json_data = array(
"draw"=> intval( $_REQUEST['draw'] ),"recordsTotal" => intval($totalRecords),"recordsFiltered" => intval($totalRecords),"data" => $data['data']
);
// echo "<pre>";
//print_r($json_data);
echo json_encode($json_data);
//exit();
}
Js
$(document).ready(function() {
var dataTable = $('#adminList').DataTable({
"processing": true,"serverSide": true,"paging": true,"searchable": true,"ajax": {
url: "fetch.php",type: "post",data: {
action: "adminList"
}
},language: {
sLengthMenu: "Show _MENU_",// remove entries text
searchPlaceholder: "Search",emptyTable: "No record found",search: ""
},"pageLength": 10,"columns": [{
"data": "name"
},{
"data": "email"
},{
"data": "date_of_created"
}
]
});
});
这是我的输出
Array
(
[draw] => 1
[recordsTotal] => 17
[recordsFiltered] => 17
[data] => Array
(
// getting my all records
)
)
有人可以帮助我解决我的代码有什么问题吗?
解决方法
问题
您已通过serverSide: true
启用了服务器端处理模式,该模式要求您处理脚本在服务器端执行的搜索,排序和分页。但是,您的脚本会返回所有数据,这就是为什么您看到所有结果而不仅仅是首页的原因。
解决方案
-
编写正确的服务器端处理代码或使用帮助程序库。
例如,DataTables发行版包括ssp.class.php助手和sample script,以帮助您在使用PHP时产生响应。
否则,您可以检查sent parameters并根据
start
和length
请求参数对结果进行分页。 -
通过删除
serverSide: true
作为初始化选项来切换到客户端处理模式,并返回服务器端响应中的所有数据。请记住,如果您的数据集很大(> 10,000条记录),则此解决方案并不理想。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。