私のコメントで述べたように。
次のことができます:
$(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');
}
});
});
});
上記は、各ページネーションリンクをクリックすることを複製します。
次に行うことをお勧めするのは、「結果」リストを生成するPHPコードとHTMLを別のファイルに分離することです。
このように、結果を表示するページで、include('path-to-results-file.php');
を使用するだけです。 これはajax以外のリクエストでも機能し、次のことができます:
Process.php
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
{
include('path-to-results-file.php');
die();
}
上記は、ajaxリクエストが行われたかどうかを検出します。行われた場合、結果を含むページ全体を表示する代わりに、結果とページネーションのみを表示します。
より良い説明を含むように更新
以下は、私が言っていることの非常に簡単な例です。
現在のprocess.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>
新しいprocess.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>
新しいpath-to-results-file.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>
今...process.php
に行くと 通常はブラウザ経由、またはjavascriptが無効になっている場合。これは、Javascriptがない場合と同じように機能します。
process.php
に移動すると 次に、ページネーションリンクの1つ(javascriptが有効になっている)、process.php
をクリックします。 Ajaxを使用していることを検出し、結果の表のみを送り返します。