ThinkPHP 是一个流行的 PHP 开发框架,它提供了丰富的功能和组件来简化 Web 开发。AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个页面的情况下,能够更新部分网页的技术。无刷新分页是指通过 AJAX 技术实现页面内容的分页加载,而不需要用户点击分页链接时重新加载整个页面。
适用于需要频繁进行数据分页展示的场景,如新闻列表、商品列表、用户列表等。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>无刷新分页示例</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<div id="content">
<!-- 数据展示区域 -->
</div>
<div id="pagination">
<!-- 分页链接 -->
</div>
<script>
$(document).ready(function() {
function loadData(page) {
$.ajax({
url: '/index.php/index/index/paginate',
type: 'GET',
data: { page: page },
success: function(data) {
$('#content').html(data.content);
$('#pagination').html(data.pagination);
}
});
}
// 初始加载第一页数据
loadData(1);
// 绑定分页链接点击事件
$(document).on('click', '.page-link', function(e) {
e.preventDefault();
var page = $(this).data('page');
loadData(page);
});
});
</script>
</body>
</html>namespace app\index\controller;
use think\Controller;
use think\Db;
class Index extends Controller
{
public function paginate()
{
$page = input('get.page', 1);
$limit = 10;
$data = Db::name('table_name')->paginate($limit, false, ['page' => $page]);
$content = '';
foreach ($data as $item) {
$content .= '<div>' . $item['field_name'] . '</div>';
}
$pagination = $data->render();
return json(['content' => $content, 'pagination' => $pagination]);
}
}通过以上步骤和示例代码,你可以实现一个基于 ThinkPHP 和 AJAX 的无刷新分页功能。