添加AJAX时分页不起作用

时间:2012-05-26 03:00:21

标签: php jquery ajax

我有一个基于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();
    });
});

但是现在,当点击分页链接时,分页不起作用并且没有任何事情发生。怎么了?

2 个答案:

答案 0 :(得分:1)

如果浏览器不支持JavaScript,Ajax将无法运行。 Ajax代表异步JavaScript和XML。

那么现在你还想支持Ajax吗?

如果是,请确认以下内容,

  1. “临时具有列表和分页的容器吗?”

  2. 给定网址($(this).attr('href'))发送的结果是什么?它应该返回适​​当的HTml,没有Document和body标签等。

  3. 您是否检查过JavaScript错误控制台,那里有错误吗?

  4. 您可以使用ajax方法代替加载,该方法提供了处理服务器错误的功能,您可以查看服务器是否返回任何错误。

答案 1 :(得分:1)

似乎对你提出的问题存在一些困惑。据我所知,你想要同时使用PHP分页(当js被禁用时)和AJAX分页以利用动态加载(当启用js时)。

为此,您应该执行以下操作:

  1. 将生成列表的代码放入generateList($page)
  2. 等函数中
  3. 在您的php页面中,输出上面创建的函数的结果作为初始视图。
  4. 创建一个ajax_actions.php页面,该页面可以调用您在步骤1中创建的函数并返回结果。
  5. 使用链接点击手动调用(通过AJAX)ajax_actions.php页面并显示结果。您可能需要从链接点击中解析页面ID并将其传递。
  6. 如果你做这些事情,当JS被禁用时,PHP将处理分页。启用JS后,您将执行ev.preventDefault()并使用AJAX显示内容。

    希望有所帮助。