Blogger Information
Blog 21
fans 2
comment 3
visits 44053
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
ThinkPHP5.1+Ajax无刷新分页
李洋
Original
2281 people have browsed it
  • 无刷新分页可以减轻服务器负担,利用Ajax技术,请求部分信息,提高网站访问速度,是网站建设的必备技术。

  • 以车辆管理项目为例,需要在后台展示自定义属性列表(lst.html),其中的列表部分摘出来,放到(paginate1.html)中:


实例

<div class="row">
    <div class="col-sm-12">
        <div class="ibox float-e-margins">
            <div class="ibox-content">
                    <table class="table table-bordered">
                        <thead>
                            <tr>
                                <th>ID</th>
                                <th>名称</th>
                                <th>取值</th>
                                <th>显示</th>
                                <th>排序</th>
                                <th>操作</th>
                            </tr>
                        </thead>
                        <tbody>
                            {volist name="self" id="vo"}
                            <tr>
                                <td>{$vo.id}</td>
                                <td>{$vo.name}</td>
                                <td>{$vo.value}</td>
                                <td>
                                    {if $vo.isshow==1}
                                    <button type="button" class="btn btn-success btn-sm">是</button>
                                    {else/}
                                    <button type="button" class="btn btn-danger btn-sm">否</button>
                                    {/if}
                                </td>
                                <td><input type="text" value="{$vo.order}" name=""></td>
                                <td>
                                    <div class="btn-group open">
                                        <button data-toggle="dropdown" class="btn btn-primary dropdown-toggle" aria-expanded="true">操作 <span class="caret"></span>
                                        </button>
                                        <ul class="dropdown-menu">
                                            <li><a href="">修改</a>
                                            </li>
                                            <li><a href="">删除</a>
                                            </li>
                                        </ul>
                                    </div>
                                </td>
                            </tr>
                            {/volist}
                        </tbody>
                    </table>
                {$self|raw}
                <div class="row">
                    <div class="col-sm-2">
                        <button class="btn btn-success" type="button" id="changeOrder">
                            <i class="fa fa-plus-square"></i>  
                            <span class="bold">排序</span>
                        </button>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

运行实例 »

点击 "运行实例" 按钮查看在线实例

  • 其中self是服务器端传递过来的自定义属性,并进行了分页操作:


  • 实例

    $selfattribute_select = db("selfattribute")->paginate(5);
    $this->assign("self",$selfattribute_select);

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  • 因为lst.html把列表摘了出来,所以还要在引入回去,才能使页面完整,同时,为了方便进行jquery操作,把列表用带id的div包裹起来:


  • 实例

    <div id="paginate">
            {include file="selfattribute/paginate1"}
    </div>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  • ThinkPHP5.1带的分页类使用的是BootStrap样式,它在页面显示时实际会有一个pagination的类,查看源代码如下:


  • 实例

    <ul class="pagination">
        <li class="disabled">
            <span>«</span></li>
        <li class="active">
            <span>1</span></li>
        <li>
            <a href="/xkershouche/public/admin/selfattribute/lst.html?page=2">2</a></li>
        <li>
            <a href="/xkershouche/public/admin/selfattribute/lst.html?page=3">3</a></li>
        <li>
            <a href="/xkershouche/public/admin/selfattribute/lst.html?page=4">4</a></li>
        <li>
            <a href="/xkershouche/public/admin/selfattribute/lst.html?page=5">5</a></li>
        <li>
            <a href="/xkershouche/public/admin/selfattribute/lst.html?page=6">6</a></li>
        <li>
            <a href="/xkershouche/public/admin/selfattribute/lst.html?page=2">»</a></li>
    </ul>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  • 这就是好多人搞不懂的pagination是怎么来的。

  • 然后开始写js代码,因为我们的分页按钮也在被请求的页面当中,属于“未来”的元素,所以这里我们要用on方法,这个方法是jquery1.7以后的方法,注意自己的jquery版本。

  • 实例

    <script type="text/javascript">
        $(document).on('click', '.pagination a', function(event) {
            var url = $(this).attr('href');
            $.ajax({
                url: url,
                type: 'get',
            })
            .done(function(data) {
                $("#paginate").html(data);
                
            })
            return false;
        });
        </script>

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  • 其中.done()方法和success方法是一样的,return false是为了阻止默认事件,防止直接跳转。

  • 那么服务器端就可以根据情况渲染模板了,代码如下:

  • 实例

    public function lst()
        {
            $selfattribute_select = db("selfattribute")->paginate(5);
            $this->assign("self",$selfattribute_select);
            if (request()->isAjax()) {
                return view("paginate1");
            } else {
                return view();
            }
        }

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  • 这样就实现了无刷新分页的效果。  此博文转发至小可老师,原文地址:http://www.xiaokethinkphp.com/archives/110

Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post