Jak stwierdzono w moich komentarzach.
Możesz wykonać następujące czynności:
$(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');
}
});
});
});
Powyższe spowoduje zreplikowanie kliknięcia każdego z linków stronicowania.
To, co radzę zrobić dalej, to oddzielić kod PHP i HTML, który generuje twoją listę "wyników" w osobnym pliku.
W ten sposób na stronie, która wyświetla wyniki, możesz po prostu użyć include('path-to-results-file.php');
które będą działać dla żądań innych niż ajax, a następnie możesz zrobić:
Proces.php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
include('path-to-results-file.php');
die();
}
Powyższe wykryje, czy zostało wykonane żądanie ajax, a jeśli tak, zamiast wyświetlać całą stronę wraz z wynikami, po prostu wyświetli tylko wyniki i paginację.
Zaktualizowano w celu uwzględnienia lepszego wyjaśnienia
Poniżej znajduje się BARDZO prosty przykład tego, co mam na myśli.
Aktualny proces.php
<?
// 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>
Nowy proces.php
<?
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>
Nowa ścieżka-do-pliku-wyników.php
<?
// 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>
Teraz... Kiedy przejdziesz do process.php
normalnie przez przeglądarkę lub gdy JavaScript jest wyłączony. Teraz po prostu będzie działać tak samo, jak bez JavaScript.
Kiedy przejdziesz do process.php
a następnie kliknij jeden z linków do stronicowania (z włączonym JavaScript), process.php
wykryje, że używasz Ajax i odeśle tylko tabelę wyników.