Laravel + AJAX: ссылки на страницы не работают - PullRequest
0 голосов
/ 30 мая 2019

Я работаю с Laravel 5.8 и пытаюсь настроить нумерацию страниц с помощью живого поиска через AJAX. Я настроил его так, чтобы нумерация страниц обновлялась при отправке данных через GET-запрос из-за поиска AJAX. Единственное, что не работает - это ссылка, когда я нажимаю, чтобы перейти на следующую страницу.

Когда я нажимаю на ссылку разбиения на страницы при первой загрузке страницы, URL-адрес выглядит следующим образом http://localhost:8000/pagination?page=2 и отображает эту страницу соответствующим образом.

Если я использую поиск в режиме реального времени и нажимаю на ссылку нумерации страниц, URL-адрес выглядит так http://localhost:8000/search?page=2 и ничего не отображается.

Это AJAX в моем pagination.blade.php файле:

  $(function getResults(url) {
    $('#search').on('keyup',function(){
      $value=$(this).val();
      $.ajax({
        type: 'GET',
        url: '{{URL::to('search')}}',
        data:{ 'search':$value },
        success:function(data){
          console.log(data);
          $('tbody').empty();
          $('tbody').html(data);
        },
      error: function(err) {
        console.log(err);
      }
      });
    });

$(function() {
    $('body').on('click', '.pagination a', function(e) {
       e.preventDefault();
        var url = $(this).attr('href');
        getResults(url);
        window.history.pushState("", "", url);
        console.log(url);
    });
  });

Это мой web.php файл:

Route::get('/search', 'SearchController@search');
Route::resource('/pagination', 'SearchController');

Моя пагинация отображается в моем файле SearchController.php через $projects->render();

Дайте мне знать, если вы хотите, чтобы я добавил больше кода. Я действительно ценю любую помощь, которую вы можете оказать!

РЕДАКТИРОВАТЬ: Добавление SearchController.php код:

public function index(Request $request)
{
  $projects = Project::orderBy('name', 'asc')->paginate(5);

  if ($request->ajax()){
    return view('pagination_data', ['projects' => $projects])->render();
  }

  return view('pagination', compact('projects'));
}

public function search(Request $request)
{
  if($request->ajax())
{

  $projects=DB::table('projects')->where('name', 'LIKE', '%'.$request->search."%")->orwhere('description', 'LIKE', '%'.$request->search."%")->orderBy('name', 'asc')->paginate(5);

  $resultCount = DB::table('projects')->count();

  if($projects)
  {

    $output=$projects->render();

        foreach ($projects as $project) {
         $output.='<tr>'.
         '<td>'.
          '<a href="'. $project->link .'" target="_blank">'.
          $project->name.
          '</a>'.
         '</td>'.
         '<td>'.
          $project->description.
         '</td>'.
         '<td>'.
          $project->creator.
         '</td>'.
        '</tr>';
}

  return Response($output);
}

 else {
   $output='<tr class="alert alert-danger" role="alert">No projects found :(</tr>';

   return Response($output);
 }

}
}
}

РЕДАКТИРОВАТЬ: Я исправил проблему http://localhost:8000/%7B%7B$project-%3Elink%7D%7D и обновил код выше.

РЕДАКТИРОВАТЬ, 6/1: Я еще более сузил проблему - похоже, что ссылки на страницы разбиты на страницы после обновления поиска в реальном времени AJAX. http://localhost:8000/pagination?page=2 всегда относится к исходным строкам (перед поиском). Я думаю, что ключом к решению этой проблемы будет обновление исходной ссылки из файла SearchController. Каждый раз, когда выполняется поиск в реальном времени, извлекается код SearchController.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...