0

私はPHPベースのページネーションシステムを持っていて、それは正常に機能しています。ページ番号を渡すためにGETパラメーターを使用しています。

    <?php 
$db = mysql_select_db($database,$connection) or trigger_error("SQL", E_USER_ERROR);
$sql1 = "SELECT COUNT(*) FROM $table";
$result1 = mysql_query($sql1, $connection) or trigger_error("SQL", E_USER_ERROR);
$row = mysql_fetch_row($result1);
$numrows = $row[0];
$rowsperpage = 2;
$totalpages = ceil($numrows / $rowsperpage);
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
   $currentpage = (int) $_GET['page'];
} else {
   $currentpage = 1;
}
if ($currentpage > $totalpages) {
   $currentpage = $totalpages;
}
if ($currentpage < 1) {
   $currentpage = 1;
}
$offset = ($currentpage - 1) * $rowsperpage;
$sql2 = "SELECT * FROM internet_security ORDER BY id DESC LIMIT $offset, $rowsperpage";
$result2 = mysql_query($sql2, $connection) or trigger_error("SQL", E_USER_ERROR);
$list = mysql_fetch_assoc($result2);
$startrow = ($currentpage-1) * $rowsperpage;

?>

リンクを表示する方法は次のとおりです。

    h3>Results <?php echo ($startrow+1) ?> - <?php echo min($startrow + $rowsperpage, $row) ?> of <?php echo ($totalpages *$rowsperpage) ?></h3>
<ul><?php 
if ($currentpage!=$totalpages) {
echo " <li><a href='{$_SERVER['PHP_SELF']}?page=$totalpages'>$totalpages</a></li> ";
$nextpage = $currentpage + 1;
echo " <li><a href='{$_SERVER['PHP_SELF']}?page=$nextpage'>Next&raquo;&raquo;</a></li> ";
}?></ul>



<ul><?php    
if($currentpage<$totalpages){
for ($x = ($currentpage - 3); $x < (($currentpage + 3) + 1); $x++) {
if (($x > 0) && ($x <= $totalpages)) {
if ($x == $currentpage) {
echo " <li id='pcurrent'><a href='{$_SERVER['PHP_SELF']}?page=$x'>$x</a></li>";
} else {
echo " <li><a href='{$_SERVER['PHP_SELF']}?page=$x'>$x</a></li> ";
}}}  
}

?> </ul>


<ul><?php
if ($currentpage > 1){
$prevpage = $currentpage - 1;
echo " <li><a href='{$_SERVER['PHP_SELF']}?page=$prevpage'>&laquo;&laquo;Prev</a></li> ";
echo "<li><a href='{$_SERVER['PHP_SELF']}?page=1'>1</a></li> ";
}?></ul>

このページ付けは正常に機能しています。

私の質問は、AJAX機能を追加して、ページネーションで両方の機能を使用できるようにすることです。つまり、JavaScriptがオフになっている場合、ページネーションはPHPで機能します。

私はこれを試しました:

$(function() {
    $('#pagination ul li a, .temp').click(function(ev) {
        ev.preventDefault();
        $('#temporary').load($(this).attr('href')).modal();
    });
});

しかし、現在、ページネーションは機能しておらず、ページネーションのリンクをクリックしても何も起こりません。どうしたの?

4

2 に答える 2

1

JavaScriptがブラウザでサポートされていない場合、Ajaxは機能しません。AjaxはAsynchronousJavaScriptandXMLの略です。

では、今でもAjaxをサポートしたいですか?

はいの場合、以下を確認します。

  1. 「リストとページ付けがある一時的なコンテナですか?」

  2. 指定されたurl($(this).attr('href'))が送信する結果は何ですか?ドキュメントや本文のタグなどがなく、適切なHTmlを返す必要があります。

  3. JavaScriptエラーコンソールを確認しましたか?エラーはありますか?

loadの代わりに、サーバーからのエラーを処理する関数を提供するajaxメソッドを使用できます。サーバーがエラーを返しているかどうかを確認できます。

于 2012-05-26T03:12:41.027 に答える
0

あなたが何を求めているのかについて混乱があるようです。私が収集できる限り、動的ロード(jsが有効になっている場合)を利用するには、PHPページ付け(jsが無効になっている場合)とAJAXページ付けの両方が必要です。

これを行うには、次のことを行う必要があります。

  1. リストを生成するコードを次のような関数に入れますgenerateList($page)
  2. phpページで、上記で作成した関数の結果を初期ビューとして出力します。
  3. 手順1で作成した関数を呼び出して結果を返すことができるajax_actions.phpページを作成します。
  4. リンククリックハンドラーを使用して、(AJAXを介して)ajax_actions.phpページを呼び出し、結果を表示します。リンクをクリックしてページIDを解析し、渡す必要があります。

これらのことを行うと、JSが無効になっている場合、PHPがページネーションを処理します。JSが有効になっている場合は、ev.preventDefault()を実行し、AJAXを使用してコンテンツを表示します。

お役に立てば幸いです。

于 2012-05-26T03:33:12.797 に答える