Como se indica en mis comentarios.
Podrías hacer lo siguiente:
$(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');
}
});
});
});
Lo anterior lo replicará haciendo clic en cada uno de los enlaces de paginación.
Lo que recomendaría hacer a continuación es separar el código PHP y el HTML que genera su lista de "resultados" en un archivo separado.
De esta manera, en la página que muestra los resultados, simplemente puede usar include('path-to-results-file.php');
que funcionará para solicitudes que no sean ajax y luego podría hacer:
Proceso.php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
include('path-to-results-file.php');
die();
}
Lo anterior detectaría si se ha realizado una solicitud ajax y, de ser así, en lugar de mostrar toda la página, incluidos los resultados, simplemente mostrará solo los resultados y la paginación.
Actualizado para incluir una mejor explicación
A continuación se muestra un ejemplo MUY simple de lo que quiero decir.
Proceso actual.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>
Nuevo proceso.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>
Nueva ruta-al-archivo-de-resultados.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>
Ahora... Cuando vayas a process.php
normalmente a través de su navegador, o cuando javascript está deshabilitado. Simplemente funcionará de la misma manera que lo hace ahora sin Javascript.
Cuando vas a process.php
y luego haga clic en uno de los enlaces de paginación (con javascript habilitado), process.php
detectará que está utilizando Ajax y solo devolverá la tabla de resultados.