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获取qq用户昵称和在线状态(实例分析)
Oct 27 PHP
php中将一个对象保存到Session中的方法
Mar 13 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
Ajax+PHP实现的删除数据功能示例
Feb 12 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
laravel 之 Eloquent 模型修改器和序列化示例
Oct 17 PHP
关于laravel框架中的常用目录路径函数
Oct 23 PHP
php 多继承的几种常见实现方法示例
Nov 18 PHP
设定php简写功能的方法
Nov 28 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目录遍历函数opendir用法实例
2014/11/20 PHP
javascript字符串拼接的效率问题
2010/12/25 Javascript
jquery 事件冒泡的介绍以及如何阻止事件冒泡
2012/12/25 Javascript
jQuery性能优化28条建议你值得借鉴
2013/02/16 Javascript
关于删除时的提示处理(确定删除吗)
2013/11/03 Javascript
javascript异步编程的4种方法
2014/02/19 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
JS实现从网页顶部掉下弹出层效果的方法
2015/08/06 Javascript
jQuery is not defined 错误原因与解决方法小结
2017/03/19 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
使用mint-ui开发项目的一些心得(分享)
2017/09/07 Javascript
jq.ajax+php+mysql实现关键字模糊查询(示例讲解)
2018/01/02 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
layDate插件设置开始和结束时间
2018/11/15 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
详解如何实现Element树形控件Tree在懒加载模式下的动态更新
2019/04/25 Javascript
使用jQuery实现掷骰子游戏
2019/10/24 jQuery
vue实现微信浏览器左上角返回按钮拦截功能
2020/01/18 Javascript
javascript实现简单页面倒计时
2021/03/02 Javascript
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
基于python实现查询ip地址来源
2020/06/02 Python
python时间序列数据转为timestamp格式的方法
2020/08/03 Python
基于PyInstaller各参数的含义说明
2021/03/04 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
美国网上眼镜商城:Zenni Optical
2016/11/20 全球购物
Kangol帽子官网:坎戈尔袋鼠
2018/09/26 全球购物
经济系大学生求职信
2013/10/01 职场文书
中专生自我鉴定
2013/12/17 职场文书
董事长助理岗位职责
2014/02/18 职场文书
保证书格式
2015/01/16 职场文书
苏州园林导游词
2015/02/03 职场文书
车间质检员岗位职责
2015/04/08 职场文书
总经理年会致辞
2015/07/29 职场文书
Spring Boot两种全局配置和两种注解的操作方法
2021/06/29 Java/Android
python垃圾回收机制原理分析
2022/04/13 Python
MySQL中order by的执行过程
2022/06/05 MySQL