美文网首页
Laravel 简单实现Ajax滚动加载

Laravel 简单实现Ajax滚动加载

作者: kylesean | 来源:发表于2017-01-09 23:11 被阅读926次

开发H5项目的时候我们总是需要用到下拉滚动刷新的方式加载页面。这里用 Laravel 实现一下,直接上代码:

创建模型

这里我们不妨创建一个 文章(Post)模型, 并且生成测试数据 50 条吧。

php artisan make:model -m

模型Post.php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Post extends Model
{

    public $fillable = ['title','description'];

   
}

迁移文件


use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;

class CreatePostTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('posts', function (Blueprint $table) {
            $table->increments('id');
            $table->string('title');
            $table->text('description');
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop("posts");
    }
}

测试数据 ModelFactory.php

$factory->define(App\Post::class, function (Faker\Generator $faker) {
    return [
        'title' => $faker->sentence,
        'description' => $faker->paragraph,
    ];
});

填充

<?php

use Illuminate\Database\Seeder;

class DatabaseSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        // $this->call(UsersTableSeeder::class);
        factory(App\Post::class, 50)->create();
    }
}

路由


Route::get('my-post', 'PostController@myPost');

控制器

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'));
    }

}

视图文件 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>![](./loader.gif)加载更多……</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

效果:


image

相关文章

  • Laravel 简单实现Ajax滚动加载

    开发H5项目的时候我们总是需要用到下拉滚动刷新的方式加载页面。这里用 Laravel 实现一下,直接上代码: 创建...

  • Laravel Ajax滚动分页加载的实现

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

  • 滚动条滚动到可视区域加载数据

    实现功能:页面某版块,当滚动条滚动到该区域时加载数据,否则不加载,节省页面加载时间 加一个开关,当ajax请求成功...

  • PHP 和 Ajax

    Php代码 收藏代码 ajax通过 HTTP 请求加载远程数据。jQuery 底层 AJAX 实现。简单易用的高...

  • Ajax滚动加载数据

    最近突发奇想,想把一些WEB常用的代码整理哈。方便记忆也方便大家学习废话也不多说啦,直接上图; CSS部分: * ...

  • Ajax滚动加载数据

    来源:http://itssh.cn/post/933.html Ajax滚动加载数据,主要思路: 1.进入页面时...

  • XMLHttpRequestjQuery.ajax(url,[s

    (重要知识点) 通过 HTTP 请求加载远程数据。(优点:比较方便使用) jQuery 底层 AJAX 实现。简单...

  • ajax

    定义和用法: ajax() 方法通过 HTTP 请求加载远程数据。 该方法是 jQuery 底层 AJAX 实现。...

  • 下拉加载

    实现元素滚动到最底或下拉时加载

  • 监测滚动到底部事件 react 自定义hook实现

    近期要实现一个滚动加载的列表组件,很明显可以通过绑定滚动事件来监听是否滚动到底部,每次滚动到底部的时候执行加载,然...

网友评论

      本文标题:Laravel 简单实现Ajax滚动加载

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