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 相关文章推荐
dedecms模板标签代码官方参考
Mar 17 PHP
php面向对象全攻略 (十二) 抽象方法和抽象类
Sep 30 PHP
PHP中将字符串转化为整数(int) intval() printf() 性能测试
Mar 20 PHP
PHP获取http请求的头信息实现步骤
Dec 16 PHP
ajax php传递和接收变量实现思路及代码
Dec 19 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
php导出CSV抽象类实例
Sep 24 PHP
浅谈PHP中其他类型转化为Bool类型
Mar 28 PHP
PHP如何读取由JavaScript设置的Cookie
Mar 22 PHP
详解thinkphp5+swoole实现异步邮件群发(SMTP方式)
Oct 13 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
php tpl模板引擎定义与使用示例
Aug 09 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+Mysql+jQuery中国地图区域数据统计实例讲解
2015/10/10 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
[原创]提供复制本站内容时出现,该文章转自脚本之家等字样的js代码
2007/03/27 Javascript
用js实现键盘方向键翻页功能的代码
2007/06/03 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
浅谈angular懒加载的一些坑
2016/08/20 Javascript
js实现砖头在页面拖拉效果
2020/11/20 Javascript
jQuery实现弹窗居中效果类似alert()
2017/02/27 Javascript
用node和express连接mysql实现登录注册的实现代码
2017/07/05 Javascript
用Vue.js方法创建模板并使用多个模板合成
2019/06/28 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
vue 数据操作相关总结
2020/12/17 Vue.js
Python笔记(叁)继续学习
2012/10/24 Python
Python解析最简单的验证码
2016/01/07 Python
python实现用户登录系统
2016/05/21 Python
python跳过第一行快速读取文件内容的实例
2018/07/12 Python
python实现串口自动触发工作的示例
2019/07/02 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Python字典生成式、集合生成式、生成器用法实例分析
2020/01/07 Python
Anconda环境下Vscode安装Python的方法详解
2020/03/29 Python
使用phonegap进行本地存储的实现方法
2017/03/31 HTML / CSS
MVMT手表官方网站:时尚又实惠的高品质手表
2016/12/04 全球购物
大学生村官任职感言
2014/01/09 职场文书
护理职业生涯规划书
2014/01/24 职场文书
超市优秀员工获奖感言
2014/08/15 职场文书
做一个有道德的人活动实施方案
2014/08/23 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
呐喊读书笔记
2015/06/30 职场文书
思想品德课教学反思
2016/02/24 职场文书
读《儒林外史》有感:少一些功利,多一些真诚
2020/01/19 职场文书
Python编程super应用场景及示例解析
2021/10/05 Python