美文网首页
Laravel Ajax滚动分页加载的实现

Laravel Ajax滚动分页加载的实现

作者: WananOH | 来源:发表于2019-05-17 09:33 被阅读0次

    在进行laravel开发项目的时候,我们可能需要用到下拉滚动刷新的方式加载页面。那么在laravel中要怎么实现呢,下面介绍一个简单的方法:

    控制器
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Http\Requests;
    use App\Post;
    
    class PostController extends Controller
    {
    
        public function myPost(Request $request)
        {
            $posts = Post::paginate(6);  
    
            if ($request->ajax()) {
                $view = view('data',compact('posts'))->render();
                return response()->json(['html'=>$view]);
            }
    
            return view('my-post',compact('posts'));
        }
    
    }
    
    blade视图文件

    resources/view/my-post.php

    <!DOCTYPE html>
    <html>
    <head>
        <title>Laravel 分页滚动加载</title>
        <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
        <link href="http://libs.baidu.com/bootstrap/3.0.3/css/bootstrap.min.css" rel="stylesheet">
        <style type="text/css">
            .ajax-load{
                background: #e1e1e1;
                padding: 10px 0px;
                width: 100%;
            }
        </style>
    </head>
    <body>
    
    <div class="container">
        <h2 class="text-center">Laravel 分页滚动加载</h2>
        <br/>
        <div class="col-md-12" id="post-data">
            @include('data')
        </div>
    </div>
    
    <div class="ajax-load text-center" style="display:none">
        <p>加载更多……</p>
    </div>
    
    <script type="text/javascript">
        var page = 1;
        $(window).scroll(function() {
            if($(window).scrollTop() + $(window).height() + 1>= $(document).height()) {
                page++;
                loadMoreData(page);
            }
        });
    
        function loadMoreData(page){
            $.ajax(
                {
                    url: '?page=' + page,
                    type: "get",
                    beforeSend: function()
                    {
                        $('.ajax-load').show();
                    }
                })
                .done(function(data)
                {
                    //console.log(data.html);
                    if(data.html == " "){
                        $('.ajax-load').html("没有数据了……");
                        return;
                    }
                    $('.ajax-load').hide();
                    $("#post-data").append(data.html);
                })
                .fail(function(jqXHR, ajaxOptions, thrownError)
                {
                    alert('服务未响应……');
                });
        }
    </script>
    
    </body>
    </html>
    

    resources/view/data.php

    @foreach($posts as $post)
    <div>
        <h3><a href="">{{ $post->title }}</a></h3>
        <p>{{ str_limit($post->description, 400) }}</p>
    
        <div class="text-right">
            <button class="btn btn-success">Read More</button>
        </div>
    
        <hr style="margin-top:5px;">
    </div>
    @endforeach
    

    相关文章

      网友评论

          本文标题:Laravel Ajax滚动分页加载的实现

          本文链接:https://www.haomeiwen.com/subject/wrxnaqtx.html