用户
 找回密码
 入住 CI 中国社区
搜索
查看: 3929|回复: 9
收起左侧

[已解决] 求助AJAX 分页问题。。

[复制链接]
发表于 2010-9-15 11:54:46 | 显示全部楼层 |阅读模式
大哥们。。这问题搞了小弟一天了。。主管那边催项目。。俺这其他功能全部完事了。。就这个ajax分页问题。。论坛搜了半天也没找着结果。。。百度也找好久了。。
   ajax 传值回来之后。。那个分页怎么整啊。。。有什么解决方案。。或者现成的代码么。。谢谢各位老大了
 楼主| 发表于 2010-9-15 13:38:21 | 显示全部楼层
木有人么。。。
发表于 2010-9-15 13:38:50 | 显示全部楼层
传值回来后,把相关区域的innerHTML变了不就ok了?
发表于 2010-9-15 14:02:40 | 显示全部楼层
具体怎么显示和分页类无关,分页类说白了,就是给你显示个导航,其他的什么也做不了
所以 ajax 分页的导航就只是把 <a> 标签改成 onclick 的,别的都是按照 AJAX 的方式做。
当然,CI 分页类不扩展,是不支持 AJAX 的。

PS: ajax 分页和普通分页有什么本质区别?你搞不清这个,写不好 AJAX 分页。
 楼主| 发表于 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;
   }
 楼主| 发表于 2010-9-15 17:21:16 | 显示全部楼层
额。。。刚发现 偶的 威望为什么是负的。。。
发表于 2010-9-16 11:54:43 | 显示全部楼层
在JS首先利用AJAX
提取总行数
自定义一个PAGE变量。这个变量初始值可以是0;

然后用JSON提取当页的数据
列出来
再用JS做几个翻页的按钮动作;
既然用AJAX;
能用JS做的就做一下。脱离开PHP也行;反正是浏览功能。不会对数据库写的操作;也没有什么大碍;
发表于 2013-3-30 17:04:14 | 显示全部楼层
JS复制代码
 
//处理返回信息的函数
  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
具体怎么显示和分页类无关,分页类说白了,就是给你显示个导航,其他的什么也做不了
所以 ajax 分页的导航 ...

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

这个地方不太懂!
发表于 2013-4-1 11:42:22 | 显示全部楼层
深深的呼吸 发表于 2013-3-30 17:06
我写个ajax方法,ajax的url是形如../index.php/home/cat/article/{$curr_page}的网址,那么success返回的 ...

让 ../index.php/home/cat/article/{$curr_page} 只返回部分页面不就可以了,返回什么是你说了算的。

本版积分规则