改造thinkphp 的 Page类,使其支持ajax方式

jerry thinkphp 2015年11月19日 收藏
改造thinkphp 的 Page类,使其支持ajax方式
效果:

说明:thinkphp版本:3.2.1
步骤:
1、打开Page.class.php(路径:ThinkPHP/Library/Think)
找到第48行:
 empty($_GET[$this->p]) ? 1 : intval($_GET[$this->p]); 
改为:
 empty(I($this->p)) ? 1 : intval(I($this->p));

实际是改为用内置的 I 函数读取传递进来的P参数,这样并不会影响原有的功能。

2、ajax方式的调用:
即前台html页面
<div id="rs">此处用来显示分页内容</div><br class="clear" /><br />
javascript:
    function jzry(p) {
        var request = $.ajax({
            url: "__MODULE__/Home/jzrh",  //用ajax加载分页数据
            type: "POST",
            async: false,
            data:{p:p},
            beforeSend: function(xhr) {
                $('#message').html("正在加载数据,请稍候。");
            }
        });
        request.done(function(msg) {
            if (msg.bj == 'ok') {
                $('#rs').html(msg.page);    //显示分页
                $("#rs a").removeAttr("href");   //删除原来的连接地址方式,
                
                //改用ajax按键事件
                $(".num,.end,.first").on("click", function(){
                    jzry( $(this).text() );
                });
                $(".next").on("click", function(){
                    jzry( parseInt($(".current").text())+1);
                });
                $(".prev").on("click", function(){
                    jzry( parseInt($(".current").text())-1);
                });
        }});
        request.fail(function(jqXHR, textStatus) {
            $('#message').html("错误: " + textStatus);
        });
    }
样式:
<style>
#rs a { color:#333;display:block; padding:0px 6px;
           font-weight:bold;float:left;border:1px solid #5d9cdf;
           height:20px; line-height:20px; margin:0px 2px;}
.current { background:#a9d2ff; display:block; padding:0px 6px;
               font-weight:bold;;float:left}
.clear{clear:both}
</style>

3、后台使用和原来的一样
 
        $user = M("user"); 
        $User = $user->page($_POST['p'].',20')->order('id')->select();
        if ($User > 0) {
            $val['bj'] = 'ok';
            $count=$user->count();
            $Page=new \Think\Page($count,20);
            $val['page']=$Page->show();
            $this->ajaxReturn($val);                      //ajax方式返回
        }