Laravel 简单实现Ajax滚动加载示例


Posted in PHP onOctober 22, 2019

开发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="external nofollow" 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

效果:

Laravel 简单实现Ajax滚动加载示例

以上这篇Laravel 简单实现Ajax滚动加载示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php 数组二分法查找函数代码
Feb 16 PHP
php压缩多个CSS为一个css的代码并缓存
Apr 21 PHP
PHP第一季视频教程(李炎恢+php100 不断更新)
May 29 PHP
php删除与复制文件夹及其文件夹下所有文件的实现代码
Jan 23 PHP
简单实用的网站PHP缓存类实例
Jul 18 PHP
使用PHP Socket 编程模拟Http post和get请求
Nov 25 PHP
php5.3不能连接mssql数据库的解决方法
Dec 27 PHP
帝国cms目录结构分享
Jul 06 PHP
PHP中调用C/C++制作的动态链接库的教程
Mar 10 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
PHP 多进程与信号中断实现多任务常驻内存管理实例方法
Oct 04 PHP
Laravel 在views中加载公共页面的实现代码
Oct 22 #PHP
laravel添加前台跳转成功页面示例
Oct 22 #PHP
Laravel 实现Controller向blade前台模板赋值的四种方式小结
Oct 22 #PHP
laravel框架如何设置公共头和公共尾
Oct 22 #PHP
laravel 实现向公共模板中传值 (view composer)
Oct 22 #PHP
浅谈laravel数据库查询返回的数据形式
Oct 21 #PHP
在laravel中实现将查询的对象转换为多维数组的函数
Oct 21 #PHP
You might like
从网上搜到的phpwind 0day的代码
2006/12/07 PHP
用PHP写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP jQuery表单,带验证具体实现方法
2014/02/15 PHP
CI框架(CodeIgniter)操作redis的方法详解
2018/01/25 PHP
两种WEB下的模态对话框 (asp.net或js的分别实现)
2009/12/02 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
2012/10/11 Javascript
jquery设置控件位置的方法
2013/08/21 Javascript
根据表格中的某一列进行排序的javascript代码
2013/11/29 Javascript
javascript中全局对象的isNaN()方法使用介绍
2013/12/19 Javascript
jQuery点击自身以外地方关闭弹出层的简单实例
2013/12/24 Javascript
jquery的trigger和triggerHandler的区别示例介绍
2014/04/20 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
ajax提交表单实现网页无刷新注册示例
2014/05/08 Javascript
原生JavaScript实现动态省市县三级联动下拉框菜单实例代码
2016/02/03 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
微信小程序 开发之全局配置
2017/05/05 Javascript
vue教程之toast弹框全局调用示例详解
2020/08/24 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
详解ES6中的Map与Set集合
2019/03/22 Javascript
微信小程序点击view动态添加样式过程解析
2020/01/21 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
2018/08/01 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
PyQt5+requests实现车票查询工具
2019/01/21 Python
Python调用钉钉自定义机器人的实现
2020/01/03 Python
python打印文件的前几行或最后几行教程
2020/02/13 Python
浅谈CSS3 动画卡顿解决方案
2019/01/02 HTML / CSS
C#面试常见问题
2013/02/25 面试题
给老婆的搞笑检讨书
2014/01/12 职场文书
竞选文艺委员演讲稿
2014/04/28 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书
我的中国梦主题班会
2015/08/14 职场文书
PHP基本语法
2021/03/31 PHP
Python字符串常规操作小结
2022/04/03 Python