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 相关文章推荐
杏林同学录(五)
Oct 09 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
PHP之uniqid()函数用法
Nov 03 PHP
WordPress开发中的get_post_custom()函数使用解析
Jan 04 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
Feb 15 PHP
深入理解PHP原理之执行周期分析
Jun 01 PHP
PHP开发APP端微信支付功能
Feb 17 PHP
PHP ADODB实现分页功能简单示例
May 25 PHP
php+Ajax无刷新验证用户名操作实例详解
Mar 04 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
Apr 23 PHP
THINKPHP5分页数据对象处理过程解析
Oct 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下封装较好的数字分页方法
2010/11/23 PHP
解析isset与is_null的区别
2013/08/09 PHP
php轻松实现中英文混排字符串截取
2014/05/28 PHP
thinkphp循环结构用法实例
2014/11/24 PHP
php计算两个文件相对路径的方法
2015/03/14 PHP
Zend Framework实现将session存储在memcache中的方法
2016/03/22 PHP
PHP封装的完整分页类示例
2018/08/21 PHP
原生PHP实现导出csv格式Excel文件的方法示例【附源码下载】
2019/03/07 PHP
表单的一些基本用法与技巧
2006/07/15 Javascript
经典的解除许多网站无法复制文字的绝招
2006/12/31 Javascript
ASP.NET jQuery 实例11 通过使用jQuery validation插件简单实现用户登录页面验证功能
2012/02/03 Javascript
用js调用迅雷下载代码的二种方法
2013/04/15 Javascript
jQuery标签替换函数replaceWith()的使用例子
2014/08/28 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
js实现类似菜单风格的TAB选项卡效果代码
2015/08/28 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
javascript中获取class的简单实现
2016/07/12 Javascript
Parcel 打包示例(React HelloWorld)
2018/01/16 Javascript
详解Vue打包优化之code spliting
2018/04/09 Javascript
jQuery+css last-child实现选择最后一个子元素操作示例
2018/12/10 jQuery
微信小程序获取地理位置及经纬度授权代码实例
2019/09/18 Javascript
Echarts地图添加引导线效果(labelLine)
2019/09/30 Javascript
Python Deque 模块使用详解
2014/07/04 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
2017/09/26 Python
浅谈Python实现Apriori算法介绍
2017/12/20 Python
Python解析并读取PDF文件内容的方法
2018/05/08 Python
异步任务队列Celery在Django中的使用方法
2018/06/07 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
情人节寄语大全
2014/04/11 职场文书
入股协议书范本
2014/04/14 职场文书
我们的节日端午节活动总结
2015/02/11 职场文书
水知道答案观后感
2015/06/08 职场文书
务工证明怎么写
2015/06/18 职场文书
pyqt5打包成exe可执行文件的方法
2021/05/14 Python
MySQL sql模式设置引起的问题
2022/05/15 MySQL