discuz分页函数改成基于jqueryd的ajax分页函数

/**
 *AJAX分页
 *$num 为总共的条数   比如说这个分类下共有15篇文章
 *$perpage为每页要显示的条数
 *$curpage为当前的页数
 *$url为请求路径,
 *$obj为html对象,返回给jqery处理
 *$page为$multipage这个字符串中要显示的表示页数的变量个数
 *$maxpages为最大的页数值   此函数最后有一句$maxpage = $realpages;
 */
function multi($num, $perpage, $curpage,$url,$obj, $maxpages = 0, $page = 10, $autogoto = TRUE, $simple = FALSE) {
   global $maxpage;
   $ajaxtarget = !empty($_GET['ajaxtarget']) ? " ajaxtarget=\"".dhtmlspecialchars($_GET['ajaxtarget'])."\" " : '';

   $multipage = '';
   //$mpurl .= strpos($mpurl, '?') ? '&' : '?';
   $realpages = 1;
   //判断总条数是否大于设置的每页要显示的条数
   if($num > $perpage) {
      //设置在$multipage中当前页数之前还要输出几个页数
      $offset = 2;

      $realpages = @ceil($num / $perpage);
      //总共的页数(不知道$maxpages的意思),这里假设是15条
      $pages = $maxpages && $maxpages < $realpages ? $maxpages : $realpages;
      //如果总页数小于multipage中要输出的页数$page,则只输出到实际页数为止
      if($page > $pages) {
         $from = 1;
         $to = $pages;
         //如果大于的话,就要输出$page个页数(我们假设的的15条就符合这个条件)
      } else {
         $from = $curpage - $offset;
         $to = $from + $page - 1;
         //假设curpage为4,目前为止,from为2,to为11
         //下面假设curpage为1

         if($from < 1) {
            $to = $curpage + 1 - $from;
            $from = 1;
            //目前为止from为1,to为3
            if($to - $from < $page) {
               //因为这里的前提条件是总条数大于page,所以,如果$to-$from小于page的话显然达不到目的,应把$to设置为$page
               $to = $page;
            }//目前为止 from为1 ,to为10
         } elseif($to > $pages) {//to是不可以大于总页数的
            $from = $pages - $page + 1;
            $to = $pages;
         }

      }

      $multipage = ($curpage - $offset > 1 && $pages > $page ? '<a href="javascript:void(0);" onclick="ajaxpage(\''.$obj.'\',\''.$url.'\','.$curpage.')">1 ...</a>' : '').
         ($curpage > 1 && !$simple ? '<li><a href="javascript:void(0);" onclick="ajaxpage(\''.$obj.'\',\''.$url.'\','.($curpage-1).')">上一页</a></li>' : '');
      for($i = $from; $i <= $to; $i++) {
         $multipage .= $i == $curpage ? '<li class="active"><a>'.$i.'</a></li>' :
            '<li><a href="javascript:void(0);" onclick="ajaxpage(\''.$obj.'\',\''.$url.'\','.$i.')">'.$i.'</a></li>';
      }

      $multipage .= ($curpage < $pages && !$simple ? '<li><a href="javascript:void(0);" onclick="ajaxpage(\''.$obj.'\',\''.$url.'\','.($i+1).')">下一页</a></li>' : '');
   }
   $maxpage = $realpages;
   return $multipage;
}


JQUERY

function ajaxpage(obj,url,page)
{
   $.ajax({
      type: "GET",
      url : url+"&curpage="+page,
      success:function(data){
        
         $(obj).html(data);
      }
   })
}


调用

<?php
$multipage = multi($total, 2,$curpage, 'index.php?act=goods&op=consulting_ajaxlist&goods_id='.$goods_id,'#gd-com',10);

echo $multipage;

?>


你可能感兴趣的:(Ajax,分页,discuz)