tieba 发表于 2010-1-11 12:15:34

CI里面怎么做AJAX的分页

本帖最后由 tieba 于 2010-1-12 17:44 编辑

看了下手册,也在论坛里面搜索了一些相关信息
但是还是没搞懂怎么把CI的分页做成AJAX的

老手们帮帮忙提点意见!

Hex 发表于 2010-1-11 12:17:11

CI 分页类不支持 ajax。
只能根据你的情况修改 CI 源码。

tieba 发表于 2010-1-11 12:28:41

哦。。感谢Hex
我最开始以为page_query_string能实现

lzyname 发表于 2010-1-11 13:16:04

我做过ajax的分页类。CI自身的分页类是<a href>这样的,所以不能用,但是也不建议改动。自己写一个分页类放在application的library里。其实除了链接改成<a href='javascript:;' onclick=AAA('分页地址')>之外,其他主要内容都可以照搬CI的分页类,反正我就是这样做的。只要在分页数字前面加一个tag变量就可以根据需要修改AAA函数名了。

另外由于CI的网址特性,对于page的segment如果固定一个数字的话其实很有问题。网址如果添加一些GET的参数的话分页segment位置岂不是变了。我想了好久,觉得还是在分页变量前面加一个/page/,后面跟页数,这样就可以识别不同的base_url和segment了。。。不知道有没有更好的解决办法。

Hex 发表于 2010-1-11 14:02:56

分页类支持 GET 传参,不会影响 URL 分段。
也就是说在 CI 里 URL 分段和 GET 传参可以同时使用,分页类也支持。

lzyname 发表于 2010-1-11 17:37:33

是的,但其实我想说的是,比如页面是site_url('aa'):
一开始分页是aa/2,那就是第二页,但如果我加一个搜索条件然后分页,用get的话那么config的base_url就变成了aa/搜索关键词/,如果分页的segment还是3的话就不对了,因为变成4了,也可能变成N了,因为搜索项可能有N个。这时候直接给segment赋固定数字就不灵了。

还有一种情况是我在model里面写一个需要分页的function,相同的功能,但是可能放在aa页里面,也可能放在bb/cc/dd/里面,这时候页数的位置又不定了,总之我用的时候就是很错乱呵呵。最后我加了一个page,page之后的是页数,之前的是baseurl~~~

zlx 发表于 2010-9-21 22:23:22

本帖最后由 zlx 于 2010-9-21 22:29 编辑

我想到了一个方法,给“封装标签”开始标签加一个ID,比如pager,然后在javascript的window.onload事件中加入如下代码:

function loadPage(url){
        alert(url);
        //ToDo:调用Ajax加载内容
}
window.onload = function(){
      var pagerItems = document.getElementById("pager").getElementsByTagName("a");
      for(var i = 0; i < pagerItems.length; ++i){
                pagerItems.onclick = function(){
                        loadPage(this.href);
                                                return false;
                }
      }
}

      经测试,加上以上代码以后点击分页的链接时能够弹出分页的URI。
      采用这种方法还有一个好处,就是如果客户端禁用了javascript的话,点击分页链接仍然可以打开文档,当然要实现这样的功能需要用javascript从URI中取出分页的数据。

离海很近 发表于 2011-11-6 17:26:07

$_href = $( this ).attr("href");
$("Form").attr("action",$_href).submit();
return false;

这样就可以让CI保持post和get的参数同步了...
页: [1]
查看完整版本: CI里面怎么做AJAX的分页