Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

Orgil's avatar
Level 2

Laravel paginate ajax search

How to paginate the result of ajax search. In Laravel pagination is quite easy. In my situation using ajax search with parameters making it complicated. I hope someone encountered with same issue.

Search Form

<form class="" action="studentSearch" method="get" id="formSearchStudent">
              <label class="col-sm-1 control-label">Нэр</label>
                <div class="col-sm-2">
                  <input type="text" class="form-control" name="firstname">
               </div>

              <label class="col-sm-1 control-label">Нэвтрэх нэр</label>
                <div class="col-sm-2">
                  <input type="text" class="form-control" name="username">
              </div>

              <label class="col-sm-1 control-label">Анги түвшин</label>
                <div class="col-sm-1">
                  <select class="select2_single form-control" name="grade_levels_id">
                    @foreach($grade_levels as $level)
                      <option value="{{$level->id}}">{{$level->title}}</option>
                    @endforeach
                        </select>
              </div>

              <label class="col-sm-1 control-label">Төлөв</label>
                <div class="col-sm-2">
                  <select class="select2_single form-control" name="system_codes_id">
                    @foreach($system_codes as $sc)
                      <option value="{{$sc->id}}">{{$sc->title}}</option>
                    @endforeach
                        </select>
              </div>

              <button type="submit" class="btn btn-success"><i class="fa fa-search"></i>&nbsp;Хайх</button>
            </form>

Search Ajax

$('#formSearchStudent').on('submit', function (e){
        e.preventDefault();

        // Get search parameters
        var formData = $('#formSearchStudent').serialize();

        $.ajax({
          type:'get',
          url:'{{URL::to('edu/pages/studentSearch')}}',
          data: formData,
          success: function (data)
          {

            var row = '';
            for(var i = 0; i < data.length; i++)
            {
              row += '<tr class="even pointer" id="row_student'+data[i].id+'">'+
                        '<td>' + (i+1) + '</td>'+
                        '<td>' + data[i].lastname + '</td>'+
                        '<td>' + data[i].firstname + '</td>'+
                        '<td>' + data[i].username + '</td>'+
                        '<td>' + data[i].title + '</td>'+
                        '<td>' + data[i].phone + '</td>'+
                        '<td>' + data[i].email + '</td>'+
                        '</tr>';
 
            }

            $('#student_body').html(row);
         }

        })
      });

Search Controller

public function studentSearch(Request $request)
   {
       if($request->ajax())
       {
         $schools_id = session()->get('key');

         if(!empty($request->all()))
         {
            $firstname = $request->firstname;
            $username = $request->username;
            $grade_levels_id = $request->grade_levels_id;
            $system_codes_id = $request->system_codes_id;

            $data = DB::table('users')
                    ->join('students', 'users.id', '=', 'students.user_id')
                    ->join('schools', 'schools.id', '=', 'users.schools_id')
                    ->join('user_profiles', 'user_profiles.id', '=', 'users.user_profiles_id')
                    ->join('grade_levels', 'grade_levels.id', '=', 'students.grade_levels_id')
                    ->join('system_codes', 'system_codes.id', '=', 'users.system_codes_id')
                    ->where('users.schools_id', $schools_id)
                    ->where('users.user_profiles_id', 5)
                    ->where('users.firstname', 'LIKE', '%'.$firstname.'%')
                    ->where('users.username', 'LIKE', '%'.$username.'%')
                    ->where('students.grade_levels_id', $grade_levels_id)
                    ->where('users.system_codes_id', $system_codes_id)
                    ->select('users.id', 'users.firstname', 'users.phone', 'users.email', 'grade_levels.title', 'users.lastname', 'users.username')->paginate(5);

           return Response($data);
         }
       }
     }

Route

Route::get('edu/pages/studentSearch', 'SearchController@studentSearch');

Searching works fine. I really confused with router. For example: ajax search url will be

http://localhost:8000/edu/pages/studentSearch?firstname=&username=&grade_levels_id=1&system_codes_id=1

But using paginate returns following url.

http:\/\/localhost:8000\/edu\/pages\/studentSearch?page=2

How to paginate with ajax search ?

@Snapey Could you help me with it ?

0 likes
1 reply

Please or to participate in this conversation.