Creating Ajax based pagination is Laravel 5.6
Ajax: Ajax (Asynchronous JavaScript and XML) is a technique to update a specific part of webpage asynchronously without reloading the page.In this article, we are going to see how to use ajax to create pagination in Laravel.
Prerequisites.
I am assuming that you have already installed and configured Laravel 5.6 on your server. If not here is a good tutorial for installing and creating CRUD in Laravel.
Step to create Laravel Pagination Ajax | ||
---|---|---|
Step1: | Configuring our Routes | |
Step2: | Creating our Controller Actions to handle Requests | |
Step3: | Creating our Model | |
Step4: | Creating our Views | |
Step5: | Writing Javascript function to Fetch records using Ajax in Laravel |
Configuring our Routes
In add following code in routes/web.php file
Route::get('/paginate', ['uses'=>'PostController@index']);
Check Out Latest Laravel Interview Questions 2018
Creating our Controller
Create a new file and add the following code to it.
<?php namespace App\Http\Controllers; use App\Post; use App\Http\Controllers\Controller; class PostController extends Controller { /** * Show all of the users for the application. * * @return Response */ public function index() { $posts= Post::paginate(10); // handling ajax requests if ($request->ajax()) { return view('post.ajaxResults', compact('posts')); } return view('post.index', ['posts' => $posts]); } }
Creating Our Model
Create a new file named post.php in your app folder and add following code to it.
//app/post.php
<?php namespace App; use Illuminate\Database\Eloquent\Model; class Post extends Model { public $fillable = ['title','description']; }
Creating our Views
In resources/views/posts directory creating following files
- index.blade.php
- ajaxResults.blade.php
In resources/views/posts/index.blade.php put follwing code and save it.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta charset="UTF-8">
<title>Ajax Pagination in Laravel</title>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootswatch/4.0.0/cerulean/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-sm-9">
@if ($posts)
<section class="data">
@include('ajaxResults')
</section>
@endif
</div>
<div class="col-sm-3">
</div>
</div>
</div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.0.0/js/bootstrap.min.js"></script>
@include('ajaxscripts')
</body>
</html>
In resources/views/posts/ajaxResults.blade.php put follwing code and save it.
<table class="table table-bordered">
<tr>
<th>Post Title</th>
<th>Description</th>
</tr>
@foreach ($posts as $post)
<tr>
<td>{{ $post->title }}</td>
<td>{{ $post->description }}</td>
</tr>
@endforeach
</table>
{!! $post->render() !!}
Read Best Ajax Interview Questions for Interview
Writing Javascript functions
Creating a new file in resources/views/ named ajaxscripts.blade.php and following code in it.
<script type="text/javascript"> $(function() { $('body').on('click', '.pagination a', function(e) { e.preventDefault(); $('.data li').removeClass('active'); $(this).parent('li').addClass('active'); var page_no=$(this).attr('href').split('page=')[1]; getPosts(page_no); }); function getPosts(page) { var uri={{url('paginate')}}; $.ajax({ url :uri+'?page=' + page, }).done(function (data) { $('.data').html(data); }).fail(function () { alert('Error in Loading Posts.'); }); } }); </script>
Laravel Pagination Ajax
Reviewed by Pakainfo
on
July 21, 2018
Rating:
No comments: