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 相关文章推荐
模仿OSO的论坛(四)
Oct 09 PHP
mysql建立外键
Nov 25 PHP
PHP include_path设置技巧分享
Jul 03 PHP
对于PHP 5.4 你必须要知道的
Aug 07 PHP
PHP实现懒加载的方法
Mar 07 PHP
php通过baihui网API实现读取word文档并展示
Jun 22 PHP
解决ThinkPHP下使用上传插件Uploadify浏览器firefox报302错误的方法
Dec 18 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
Nov 25 PHP
Redis构建分布式锁
Mar 28 PHP
详解yii2使用多个数据库的案例
Jun 16 PHP
对laravel的csrf 防御机制详解,及form中csrf_token()的存在介绍
Oct 24 PHP
PHP新手指南
Apr 01 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数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
使用PHP把HTML生成PDF文件的几个开源项目介绍
2014/11/17 PHP
一个实用的php验证码类
2017/07/06 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
2019/03/07 PHP
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
JS实现兼容各浏览器解析XML文档数据的方法
2015/06/01 Javascript
require.js配合插件text.js实现最简单的单页应用程序
2016/07/12 Javascript
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
数组Array的排序sort方法
2017/02/17 Javascript
Vue.js组件tab实现选项卡切换
2020/03/23 Javascript
koa2服务端使用jwt进行鉴权及路由权限分发的流程分析
2019/07/22 Javascript
node.js 微信开发之定时获取access_token
2020/02/07 Javascript
[06:43]2018DOTA2国际邀请赛寻真——VGJ.Thunder
2018/08/11 DOTA
[01:35]2018年度CS GO最佳战队-完美盛典
2018/12/17 DOTA
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
opencv python 图像去噪的实现方法
2018/08/31 Python
对python GUI实现完美进度条的示例详解
2018/12/13 Python
Python如何基于selenium实现自动登录博客园
2019/12/16 Python
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2020/01/08 Python
Pytorch 实现sobel算子的卷积操作详解
2020/01/10 Python
CSS3教程:边框属性border的极致应用
2009/04/02 HTML / CSS
分享一个H5原生form表单的checkbox特效代码
2018/02/26 HTML / CSS
Saucony澳大利亚官网:美国跑鞋品牌,运动鞋中的劳斯莱斯
2018/05/05 全球购物
师范应届生教师求职信
2013/11/05 职场文书
市场拓展计划书
2014/05/03 职场文书
党员活动日总结
2014/05/05 职场文书
社区反邪教工作方案
2014/06/16 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
法律专业大学生职业生涯规划书:向目标一步步迈进
2014/09/22 职场文书
晋江市委常委班子四风问题整改工作方案
2014/10/26 职场文书
2014年学生会生活部工作总结
2014/11/07 职场文书
停水通知
2015/04/16 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
幼儿园教师教学反思
2016/03/02 职场文书
python中的mysql数据库LIKE操作符详解
2021/07/01 MySQL