Laravel中paginate+ajax分页加载

分页是每个程序猿写了无数变得功能,Laravel中自带paginate进行分页非常简单又实用。但是paginate基本是通过URL修改page参数进行分页这样就遇到一个页面加载缓慢的问题,用户友好性能非常的差,所以没办法基本的分页都是需要采用ajax分页。
paginate 分页基本用法
自定义分页样式

效果图.gif

1.html

主blade中包含了两个表格blade

@include('admin.report.integralload')
@include('admin.report.wishload')

integralload.blade.php

公益指数({{$integrals_sum}}分)

{{$integrals->links('admin.report.pagination')}}
@foreach($integrals as $key => $integral) @endforeach
# 公益项 指数 日期
{{$key + 1}}. {{$integral -> name}} {{$integral -> integral}} {{$integral->created_at}}

wishload.blade.php



微心愿({{$wishs_count}}个)

{{$wishs->links('admin.report.pagination')}}
@foreach($wishs as $key => $wish) @endforeach
# 微心愿 社区 心愿状态 日期
{{$key + 1}}. {{str_limit($wish -> title,20)}} {{$wish -> bbs ->name}} @if($wish->apply_state == 0) 未审核 @elseif($wish->apply_state == 5) 审核成功 @elseif($wish->apply_state == 10) 审核失败 @endif {{$wish->created_at}}

2.javascript ajax 提交

监听a超链接点击事件触发ajax

    $(function() {
        $('body').on('click', '#wishs .pagination a', function(e) {
            e.preventDefault();
            var url = $(this).attr('href');
            var id = "wishs";
            getArticles(url,id);

        });

        $('body').on('click', '#integrals .pagination a', function(e) {
            e.preventDefault();
            var url = $(this).attr('href');
            var id = "integrals";
            getArticles(url,id);

        });

        function getArticles(url,id) {

            $('#'+id+'_load').append('\
\\<\/i\> \<\/div\>'); $.ajax({ url : url, data : {id:id} }).done(function (data) { $('#'+id).html(data); }).fail(function () { alert('Articles could not be loaded.'); }); window.history.pushState("", "", url); } });

4.php后台

判断request是不是ajax进行操作

public function user($user_id, Request $request)
    {

        $user = Users::find($user_id);

        $wishs = Wishs::where('users_id', '=', $user_id)->orderBy('created_at', 'desc')->paginate(5);
        $wishs_count = Wishs::where('users_id', '=', $user_id)->count();

        $integrals = Integrals::where('users_id', '=', $user_id)->orderBy('created_at', 'desc')->paginate(5);
        $integrals_sum = Integrals::where('users_id', '=', $user_id)->sum('integral');

        $signs_count = Signs::where('users_id', '=', $user_id)->count();

        if ($request->ajax()) {
            $data = $request->all();
            if (isset($data['id'])) {
                if ($data['id'] == "wishs") {
                    return $view = view('admin.report.wishload', ['wishs' => $wishs, 'wishs_count' => $wishs_count])->render();
                } elseif ($data['id'] == "integrals") {
                    return $view = view('admin.report.integralload', ['integrals' => $integrals, 'integrals_sum' => $integrals_sum])->render();
                } 
            }

        }

        $view = view('admin.user', [
            'user' => $user,
            'wishs' => $wishs,
            'integrals' => $integrals,
            'integrals_sum' => $integrals_sum,
            'wishs_count' => $wishs_count,
            'signs_count' => $signs_count,
            'snapshots' => $snapshots,
            'snapshots_count' => $snapshots_count]);

        $content = Admin::content(function (Content $content) use ($view) {
            $content->header('党员信息');
            $content->row($view->render());
        });

        return $content;
    }

用起来还是挺方便,加载更多可以同理完成操作
优点是借用了blade的渲染优点,不用在js端拼繁琐的HTML代码。

Laravel中paginate+ajax分页加载_第1张图片
cut.png

你可能感兴趣的:(Laravel中paginate+ajax分页加载)