Laravel - Перенаправить на страницу через функцию javascript - PullRequest
0 голосов
/ 08 мая 2020

Итак, вот что я хочу сделать: у меня есть страница поиска, на которой отображаются несколько продуктов. Вот как я называю это представление:

public function show()
  {
    $products = App\Product::paginate(20);
    return view('pages.search')->with('products', $products);
  }

На этой странице у меня есть несколько фильтров, таких как марка, цена и т. Д. c. Когда я нажимаю кнопку «Применить фильтры», я отправляю запрос ajax.

function sendApplyFiltersRequest(event) {
  event.preventDefault();
  //get info from checkboxes
  sendAjaxRequest('post', 'search/filter', {brand: 1, price: 100}, searchFilterHanlder);
}

, который вызывает эту функцию:

function sendAjaxRequest(method, url, data, handler) {
  let request = new XMLHttpRequest();

  request.open(method, url, true);
  request.setRequestHeader('X-CSRF-TOKEN', document.querySelector('meta[name="csrf-token"]').content);
  request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  request.addEventListener('load', handler);
  request.send(encodeForAjax(data));
}

запрос со всей информацией отправлено на мой маршрут «поиск / фильтр», который приводит к этой функции:

public function filterResults(Request $request)
  {
    $brands = $request->brands;
    $minPrice = $request->minPrice;
    //more stuff about the filters
  }

И теперь мне нужна эта функция, чтобы иметь возможность снова перенаправлять на страницу. Это будет примерно так:

public function filterResults(Request $request)
  {
    $brands = $request->brands;
    $minPrice = $request->minPrice;
    $products = App\Product::all()->where('price', '<', $minPrice);
    return redirect('pages.search')->with('products', $products);
  }

обработчик ответа ajax выглядит следующим образом:

function searchFilterHanlder() {
  if (this.status != 200) {
    alert("Failed to filter results :'(");
  }
  //do stuff
}

Как я могу сделать что-то подобное?

Примечание : Я не могу сделать это так, как я вам показываю, потому что я делаю запрос ajax через функцию javascript (в моем поиске. js файл), и поэтому то, что возвращает filterResults, будет go к этой функции javascript и не будет выполнять перенаправление сразу.

...