xiasix 发表于 2010-9-15 11:54:46

求助AJAX 分页问题。。

大哥们。。这问题搞了小弟一天了。。主管那边催项目。。俺这其他功能全部完事了。。就这个ajax分页问题。。论坛搜了半天也没找着结果。。。百度也找好久了。。
   ajax 传值回来之后。。那个分页怎么整啊。。。有什么解决方案。。或者现成的代码么。。谢谢各位老大了

xiasix 发表于 2010-9-15 13:38:21

木有人么。。。

jeongee 发表于 2010-9-15 13:38:50

传值回来后,把相关区域的innerHTML变了不就ok了?

Hex 发表于 2010-9-15 14:02:40

具体怎么显示和分页类无关,分页类说白了,就是给你显示个导航,其他的什么也做不了
所以 ajax 分页的导航就只是把 <a> 标签改成 onclick 的,别的都是按照 AJAX 的方式做。
当然,CI 分页类不扩展,是不支持 AJAX 的。

PS: ajax 分页和普通分页有什么本质区别?你搞不清这个,写不好 AJAX 分页。

xiasix 发表于 2010-9-15 17:16:31

本帖最后由 xiasix 于 2010-9-15 17:19 编辑

额 搞了一下午 搞出来了 贴下代码,count那块没走 model 直接控制器里写了
controller:
          $page=$this->uri->segment(3)?$this->uri->segment(3):1;      //这句就是获取中的page的值,假如不存在page,那么页数就是1。
                $num=20;   
            $data['results'] = $this->adduser->ShowPlan3();
            $total=$this->db->count_all('plan');
                  $url=base_url()."index.php/user/checklogin3";   
                $pagenum=ceil($total/$num);                                    //获得总页数,也是最后一页
                $page=min($pagenum,$page);//获得首页
                $prepg=$page-1;//上一页
                $nextpg=($page==$pagenum ? 0 : $page+1);//下一页
                $offset=($page-1)*$num;                                        //获取limit的第一个参数的值,假如第一页则为(1-1)*10=0,第二页为(2-1)*10=10。
                $data['pagenav']="<ul>";

                //开始分页导航条代码:
                $data['pagenav'].="<li>显示第 <B>".($total?($offset+1):0)."</B>-<B>".min($offset+10,$total)."</B> 条记录</li><li>共 $total 条记录 </li>";

                //如果只有一页则跳出函数:
                if($pagenum<=1) $pagenum=10;

                $data['pagenav'].="<li> <a href=javascript:dopage('result','$url/1');>首页</a></li> ";
                if($prepg) $data['pagenav'].="<li> <a href=javascript:dopage('result','$url/$prepg');>前页</a></li> "; else $data['pagenav'].=" <li>前页</li> ";
                if($nextpg) $data['pagenav'].="<li><a href=javascript:dopage('result','$url/$nextpg');>后页</a> </li>"; else $data['pagenav'].=" <li>后页</li> ";
                $data['pagenav'].="<li> <a href=javascript:dopage('result','$url/$pagenum');>尾页</a></li> ";
                $data['pagenav'].="<li>第 $page 页</li><li>共 $pagenum 页</li></ul>";

                //假如传入的页数参数大于总页数,则显示错误信息
                if($page>$pagenum){
               echo "1111111 ".$page;
               exit;
                }               
      $data['results'] = $this->adduser->ShowPlan($num,$offset);
      $this->load->view('home',$data);


views:
   <div id="fenye"><?php echo $pagenav; ?> </div>
ajaxjs:
   var http_request=false;
function send_request(url){//初始化,指定处理函数,发送请求的函数
    http_request=false;
      //开始初始化XMLHttpRequest对象
      if(window.XMLHttpRequest){//Mozilla浏览器
         http_request=new XMLHttpRequest();
         if(http_request.overrideMimeType){//设置MIME类别
         http_request.overrideMimeType("text/xml");
         }
      }
      else if(window.ActiveXObject){//IE浏览器
         try{
          http_request=new ActiveXObject("Msxml2.XMLHttp");
         }catch(e){
          try{
          http_request=new ActiveXobject("Microsoft.XMLHttp");
          }catch(e){}
         }
    }
      if(!http_request){//异常,创建对象实例失败
         window.alert("创建XMLHttp对象失败!");
         return false;
      }
      http_request.onreadystatechange=processrequest;
      //确定发送请求方式,URL,及是否同步执行下段代码
    http_request.open("GET",url,true);
      http_request.send(null);
}
//处理返回信息的函数
function processrequest(){
   if(http_request.readyState==4){//判断对象状态
   if(http_request.status==200){//信息已成功返回,开始处理信息
          document.getElementById(reobj).innerHTML=http_request.responseText;
         }
         else{//页面不正常
          alert("您所请求的页面不正常!");
         }
   }
}
function dopage(obj,url){
   document.getElementById(obj).innerHTML="<font color='green' font-size='12'>正在读取数据...</font>";
   send_request(url);
   reobj=obj;
   }

xiasix 发表于 2010-9-15 17:21:16

额。。。刚发现 偶的 威望为什么是负的。。。

sonic 发表于 2010-9-16 11:54:43

在JS首先利用AJAX
提取总行数
自定义一个PAGE变量。这个变量初始值可以是0;

然后用JSON提取当页的数据
列出来
再用JS做几个翻页的按钮动作;
既然用AJAX;
能用JS做的就做一下。脱离开PHP也行;反正是浏览功能。不会对数据库写的操作;也没有什么大碍;

深深的呼吸 发表于 2013-3-30 17:04:14


//处理返回信息的函数
function processrequest(){
   if(http_request.readyState==4){//判断对象状态
   if(http_request.status==200){//信息已成功返回,开始处理信息
          document.getElementById(reobj).innerHTML=http_request.responseText;
         }
         else{//页面不正常
          alert("您所请求的页面不正常!");
         }
   }
}

你这返回的东西是整个页面啊,你把整个页面加到这个id里面去?

深深的呼吸 发表于 2013-3-30 17:06:29

Hex 发表于 2010-9-15 14:02 static/image/common/back.gif
具体怎么显示和分页类无关,分页类说白了,就是给你显示个导航,其他的什么也做不了
所以 ajax 分页的导航 ...

我写个ajax方法,ajax的url是形如../index.php/home/cat/article/{$curr_page}的网址,那么success返回的function(data),data是整个页面啊,我是不是要取出data里面分页区域的内容innerhtml到一个div里面呢??

这个地方不太懂!

Hex 发表于 2013-4-1 11:42:22

深深的呼吸 发表于 2013-3-30 17:06 static/image/common/back.gif
我写个ajax方法,ajax的url是形如../index.php/home/cat/article/{$curr_page}的网址,那么success返回的 ...

让 ../index.php/home/cat/article/{$curr_page} 只返回部分页面不就可以了,返回什么是你说了算的。
页: [1]
查看完整版本: 求助AJAX 分页问题。。