TP5+ajax实现点击表格表头切换排序,带分页

24 篇文章 0 订阅
4 篇文章 0 订阅

php接收页码请求的地址


    /**
     * ajax 无刷新分页
     * param $page int 页码数
     * param $field string 排序字段
     * param $sort asc或desc 排序方式
     * @return mixed
     * @throws \think\exception\DbException
     */
    public function getPage($page=1, $field='field', $sort='asc')
    {
        $order = $field." ".$sort;
        $list = Db::name('table')
            ->order($order)
            ->paginate(10,false,['page'=>$page,'path'=>'javascript:AjaxPage([PAGE]);']);
        $this->assign('list', $list);
        return $this->fetch('page');

    }

php类中的sort方法

/**
     * 无刷新排序
     *
     */
public function sort()
{
    if (input("field") && input("sort")) {
        $order = input("field")." ".input("sort");
        $phone_list = Db::name('tel')
            ->alias('t')
            ->join('tree c', 't.c_id=c.id')
            ->field('t.phone_name,c.name,t.txt_no,t.collect,t.valid,t.jiaoji,c.name,FROM_UNIXTIME(t.stamp, "%Y-%m-%d %H:%i:%s") stamp')
            ->where('t.date',cookie('query_time'))
            ->order($order)
            ->paginate(10,false,['page'=>input("page"),'path'=>'javascript:AjaxPage([PAGE]);']);
        $this->assign('phone_list', $phone_list);
        return $this->fetch('page');
    }
}

js方法中field和order作为全局变量,随点击不同的表头改变

var order = 'desc';
var field = 'phone_name';

// 排序
$(function(){
    $(".table-responsive").on('click', '.thsort', function(event) {
        event.preventDefault();
        /* Act on the event */
        // 获取排序方式
        field = $(this).data("field");
        // alert(field);return;
        if (order == 'desc') {
           order = "asc";
        } else if (order == 'asc') {
           order = "desc";
        }
        console.log(field);
        // alert(order);

        $.post('{:url("Tel/sort")}', {field: field, sort: order}, function(data, textStatus, xhr) {
            /*optional stuff to do after success */
            //console.log(data);
            $('.table-responsive').html(data);
        });
    });
});

function AjaxPage(page){
    // 按字段分页
    $.get(
    '/index.php/index/Tel/getPage',
    { page: page, field: field, sort: order},
    function (data) {
        // console.log(data);return;
        $('.table-responsive').html(data)
}

html模版的page页面

<table class="table table-stript table-bordered table-hover pull-left">
    <thead>
        <tr>
        <th class="thsort" data-field="field1" style="cursor: pointer;">表头1</th>
            <th class="thsort" data-field="field2" style="cursor: pointer;">表头2</th>
            <th class="thsort" data-field="field3" style="cursor: pointer;">表头3</th>
            <th class="thsort" data-field="field4" style="cursor: pointer;">表头4</th>
            <th class="thsort" data-field="field5" style="cursor: pointer;">表头5</th>
            <th class="thsort" data-field="field6" style="cursor: pointer;">表头6</th>
            <th class="thsort" data-field="field7" style="cursor: pointer;">表头7</th>
        </tr>
    </thead>
    <tbody>
        {volist name="phone_list" id="vo" key="k"}
        <tr>
            <td>{$vo.phone_name}</td>
            <td>{$vo.name}</td>
            <td>{$vo.txt_no}</td>
            <td>{$vo.collect}</td>
            <td>{$vo.valid}</td>
            <td>{$vo.jiaoji}</td>
            <td>{$vo.stamp}</td>
        </tr>
        {/volist}
    </tbody>
</table>
<center>{$phone_list->render()}</center>

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值