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 运行效率总结(提示程序速度)
Nov 26 PHP
有关PHP中MVC的开发经验分享
May 17 PHP
php如何调用webservice应用介绍
Nov 24 PHP
php加密解密函数authcode的用法详细解析
Oct 28 PHP
php实现zip压缩文件解压缩代码分享(简单易懂)
May 10 PHP
php中实现xml与mysql数据相互转换的方法
Dec 25 PHP
Yii实现多数据库主从读写分离的方法
Dec 29 PHP
浅谈Coreseek、Sphinx-for-chinaese、Sphinx+Scws的区别
Dec 15 PHP
php+js实现裁剪任意形状图片
Oct 31 PHP
PHP递归的三种常用方式
Feb 28 PHP
ThinkPHP5.0框架结合Swoole开发实现WebSocket在线聊天案例详解
Apr 02 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
Oct 25 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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
php去除字符串换行符示例分享
2014/02/13 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
PHP Ajax实现无刷新附件上传
2016/08/17 PHP
PHP实现的分页类定义与用法示例
2017/07/05 PHP
一些主流JS框架中DOMReady事件的实现小结
2011/02/12 Javascript
html5+javascript制作简易画板附图
2014/04/25 Javascript
node.js中的buffer.copy方法使用说明
2014/12/14 Javascript
js倒计时简单实现方法
2015/12/17 Javascript
Node.js开发者必须了解的4个JS要点
2016/02/21 Javascript
详解微信小程序开发之城市选择器 城市切换
2017/01/17 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
NodeJs的fs读写删除移动监听
2017/04/28 NodeJs
基于JS递归函数细化认识及实用实例(推荐)
2017/08/07 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
JavaScript实现五子棋游戏的方法详解
2019/07/08 Javascript
jquery弹窗时禁止body滚动条滚动的例子
2019/09/21 jQuery
《javascript设计模式》学习笔记五:Javascript面向对象程序设计工厂模式实例分析
2020/04/08 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
[01:02:04]EG vs Liquid 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
python socket 超时设置 errno 10054
2014/07/01 Python
在Python的Flask框架下收发电子邮件的教程
2015/04/21 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
Python基于二分查找实现求整数平方根的方法
2016/05/12 Python
python 寻找优化使成本函数最小的最优解的方法
2017/12/28 Python
python文件转为exe文件的方法及用法详解
2019/07/08 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
pycharm实现在虚拟环境中引入别人的项目
2020/03/09 Python
深入解析HTML5 Canvas控制图形矩阵变换的方法
2016/03/24 HTML / CSS
html5简介及新增功能介绍
2020/05/18 HTML / CSS
2015法院个人工作总结范文
2015/05/25 职场文书
圆明园纪录片观后感
2015/06/03 职场文书
花木兰观后感
2015/06/10 职场文书
vue3引入highlight.js进行代码高亮的方法实例
2022/04/08 Vue.js
vue打包时去掉所有的console.log
2022/04/10 Vue.js
Go 内联优化让程序员爱不释手
2022/06/21 Golang