Laravel Pagination Ajax


 Laravel Pagination Ajax

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 Laravel Pagination Ajax Reviewed by Pakainfo on July 21, 2018 Rating: 5

No comments:

'Heartbroken' family of Nigerian man who died at Calgary airport wants answers

'Heartbroken' family of Nigerian man who died at Calgary airport wants answers Bolante Idowu Alo died following altercation wit...

Powered by Blogger.