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 json_encode奇怪问题说明
Sep 27 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
Feb 05 PHP
ThinkPHP3.1之D方法实例详解
Jun 20 PHP
php精确的统计在线人数的方法
Oct 21 PHP
PHP模板引擎Smarty内置变量调解器用法详解
Apr 11 PHP
php面向对象值单例模式
May 03 PHP
常用PHP封装分页工具类
Jan 14 PHP
PHP验证终端类型是否为手机的简单实例
Feb 07 PHP
详解Yii2.0使用AR联表查询实例
Jun 16 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
Apr 21 PHP
Laravel框架实现定时Task Scheduling例子
Oct 22 PHP
Laravel5.1框架路由分组用法实例分析
Jan 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
PHP提取数据库内容中的图片地址并循环输出
2010/03/21 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
javascript 继承实现方法
2009/08/26 Javascript
JavaScript 对象模型 执行模型
2010/10/15 Javascript
JS中setTimeout()的用法详解
2013/04/14 Javascript
结合JQ1.9通过js正则判断各种浏览器版本的方法
2013/12/30 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
Jquery 监视按键,按下回车键触发某方法的实现代码
2014/05/11 Javascript
JavaScript 模块化编程(笔记)
2015/04/08 Javascript
javascript中使用正则表达式清理table样式的代码
2020/04/01 Javascript
javascript中new关键字详解
2015/12/14 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
js实现弹窗居中的简单实例
2016/10/09 Javascript
jquery动态添加文本并获取值的方法
2016/10/12 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
JS/jquery实现一个网页内同时调用多个倒计时的方法
2017/04/27 jQuery
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
easyUI 实现的后台分页与前台显示功能示例
2020/06/01 Javascript
微信小程序实现上传照片代码实例解析
2020/08/04 Javascript
[06:15]2016国际邀请赛中国区预选赛单车采访:我顶WINGS
2016/06/27 DOTA
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
[50:50]完美世界DOTA2联赛PWL S3 INK ICE vs DLG 第一场 12.20
2020/12/23 DOTA
简单的Python的curses库使用教程
2015/04/11 Python
Python实现基于多线程、多用户的FTP服务器与客户端功能完整实例
2017/08/18 Python
深入理解Django的中间件middleware
2018/03/14 Python
Python安装lz4-0.10.1遇到的坑
2018/05/20 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
详解BeautifulSoup获取特定标签下内容的方法
2020/12/07 Python
英国最受信任的在线眼镜商之一:Fashion Eyewear
2019/10/31 全球购物
幼儿园家长心得体会
2016/01/21 职场文书
使用springboot暴露oracle数据接口的问题
2021/05/07 Oracle
详解JAVA的控制语句
2021/11/11 Java/Android