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 会话(session 时间设定)使用入门代码
Jun 05 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
php微信公众平台开发类实例
Apr 01 PHP
php打造智能化的柱状图程序,用于报表等
Jun 19 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
Sep 30 PHP
php 输出json及显示json中的中文汉字详解及实例
Nov 09 PHP
PHP输出XML格式数据的方法总结
Feb 08 PHP
Yii框架参数化查询中IN查询只能查询一个的解决方法
May 20 PHP
PHP实现的mysql主从数据库状态检测功能示例
Jul 20 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
php解决安全问题的方法实例
Sep 19 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
Jul 08 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数组
2006/10/09 PHP
几个优化WordPress中JavaScript加载体验的插件介绍
2015/12/17 PHP
PHP文件上传类实例详解
2016/04/08 PHP
php图像处理函数imagecopyresampled用法详解
2016/12/02 PHP
CakePHP框架Model关联对象用法分析
2017/08/04 PHP
js 控制下拉菜单刷新的方法
2013/03/03 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
JavaScript onkeydown事件入门实例(键盘某个按键被按下)
2014/10/17 Javascript
轻量级的原生js日历插件calendar.js使用指南
2015/04/28 Javascript
js实现数组冒泡排序、快速排序原理
2016/03/08 Javascript
简述JavaScript提交表单的方式 (Using JavaScript Submit Form)
2016/03/18 Javascript
javascript cookie用法基础教程(概念,设置,读取及删除)
2016/09/20 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
详解在Node.js中发起HTTP请求的5种方法
2019/01/10 Javascript
JS页面获取 session 值,作用域和闭包学习笔记
2019/10/16 Javascript
JQuery表单元素取值赋值方法总结
2020/05/12 jQuery
javascript实现数字时钟效果
2021/02/06 Javascript
Python中IPYTHON入门实例
2015/05/11 Python
python黑魔法之参数传递
2016/02/12 Python
HTML的form表单和django的form表单
2019/07/25 Python
matplotlib绘制多子图共享鼠标光标的方法示例
2021/01/08 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
美国娱乐和流行文化商品店:FYE
2017/09/14 全球购物
东南亚排名第一的服务市场:kaodim
2019/03/28 全球购物
数据库面试要点基本概念
2013/10/31 面试题
咖啡蛋糕店创业计划书
2014/01/28 职场文书
诚信考试倡议书
2014/04/15 职场文书
《毛主席在花山》教学反思
2014/04/20 职场文书
生物科学专业毕业生求职信
2014/06/02 职场文书
超市七夕促销活动方案
2014/08/28 职场文书
党员群众路线对照检查材料思想汇报
2014/09/17 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
入党个人总结范文
2015/03/02 职场文书
离婚案件答辩状
2015/05/22 职场文书
企业宣传语大全
2015/07/13 职场文书
2016年圣诞节活动总结范文
2016/04/01 职场文书