Như đã nêu trong phần bình luận của tôi.
Bạn có thể làm như sau:
$(document).ready(function()
{
$('.paginate').live('click', function(e)
{
e.preventDefault();
var btnPage = $(this);
$.ajax(
{
url : btnPage.attr('href'),
success : function(resp)
{
// replace current results with new results.
$('#project_section').html(resp);
},
error : function()
{
window.location.href = btnPage.attr('href');
}
});
});
});
Ở trên sẽ sao chép bạn nhấp vào từng liên kết phân trang.
Điều tôi khuyên bạn nên làm tiếp theo là tách mã PHP và HTML tạo danh sách "kết quả" của bạn thành một tệp riêng biệt.
Bằng cách này, trên trang hiển thị kết quả, bạn có thể chỉ cần sử dụng include('path-to-results-file.php');
điều này sẽ hoạt động đối với các yêu cầu không phải ajax và sau đó bạn có thể thực hiện:
Process.php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
include('path-to-results-file.php');
die();
}
Phần trên sẽ phát hiện xem một yêu cầu ajax đã được thực hiện hay chưa và nếu vậy, thay vì hiển thị toàn bộ trang bao gồm cả kết quả, nó sẽ chỉ hiển thị kết quả và phân trang.
Đã cập nhật để bao gồm lời giải thích tốt hơn
Dưới đây là một ví dụ RẤT đơn giản về ý tôi.
Process.php hiện tại
<?
// currently contains all of the code required
// to query the database etc.
?>
<html>
<head>...</head>
<body>
<!-- header content -->
<table>
<?
// currently contains all of the code required to display
// the results table and pagination links.
?>
</table>
<!-- footer content -->
</body>
</html>
process.php mới
<?
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
include('path-to-results-file.php');
die();
}
?>
<html>
<head>...</head>
<body>
<!-- header content -->
<? include('path-to-results-file.php'); ?>
<!-- footer content -->
</body>
</html>
Path-to-results-file.php mới
<?
// currently contains all of the code required
// to query the database etc.
?>
<table>
<?
// currently contains all of the code required to display
// the results table and pagination links.
?>
</table>
Bây giờ ... Khi bạn truy cập process.php
thông thường thông qua trình duyệt của bạn hoặc khi javascript bị tắt. Nó sẽ đơn giản hoạt động giống như cách nó làm mà không có Javascript bây giờ.
Khi bạn truy cập process.php
và sau đó nhấp vào một trong các liên kết phân trang (có bật javascript), process.php
sẽ phát hiện rằng bạn đang sử dụng Ajax và chỉ gửi lại bảng kết quả.