Предварительный загрузчик для запросов Laravel

У меня есть приложение, встроенное в Laravel, поиск по домашней странице (home.blade.php) запрашивает БД и возвращает результаты на странице результатов (results.blade.php). В настоящее время приложение используется в течение некоторого времени, и в ряде полей выполняется поиск сложных записей размером 10-15 тыс. Мы используем Elastic search, чтобы сделать поиск максимально быстрым, но это все равно занимает около 10 секунд.

Я хотел бы отобразить предварительный загрузчик. Обычно я делаю это, используя ajax или JS, когда (window) .load завершается примерно так:

var progress = setInterval(function () {
var $bar = $("#bar");

if ($bar.width() >= 600) {
clearInterval(progress);
} else {
$bar.width($bar.width() + 60);
}
$bar.text($bar.width() / 6 + "%");
if ($bar.width() / 6 == 100){
$bar.text("Still working ... " + $bar.width() / 6 + "%");
}
}, 800);

$(window).load(function() {
$("#bar").width(600);
$(".loader").fadeOut(3000);
});

НО предварительный загрузчик не появляется, потому что Laravel все еще находится на предыдущей (поисковой) странице, еще не загружая страницу результатов, в процессе запроса к БД.

Есть ли простое решение для вызова ajax моего контроллера Laravel и отображения предварительного загрузчика во время его выполнения? В идеале это способ отслеживать количество записей, которые ищет Laravel / Eloquent.

Я бы хотел, чтобы это выглядело примерно так:
preloader поиск поиск php макет

ОБНОВИТЬ:

Мне пришло в голову, я мог бы исправить это, возвращая результат в виде вызова API

function resultsCall() {
$.ajax({
type: "POST",
url: './myapiroute',
data: "",
success: function() {
console.log("Loaded!");
}
})

};

но я бы хотел избежать дополнительной безопасности, которая обеспечивается вызовами API — передачей токенов / заголовков и т. д. … Я ищу решение на основе Laravel / php, если оно есть.

0

Решение

Просто чтобы быть ясно: ваш preloader работает нормально, но вы не получили ответ? Может быть, это проблема с кодом вашего контроллера.

Если это ваш вопрос, и вы не хотите передавать какие-либо типы заголовков, например токены, используя Laravel 5.2, определите свой маршрут без назначения промежуточного программного обеспечения API. Для Laravel 5.3 и 5.4 просто определите свой маршрут в routes/web.php и ты уже настроен

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]