У меня есть приложение, построенное в Laravel, поиск на домашней странице (home.blade.php) запрашивает БД и возвращает результаты на странице результатов (results.blade.php). Теперь приложение используется некоторое время, когда в нескольких полях выполняется поиск 10-15K сложных записей. Мы используем поиск Elastic, чтобы сделать поиск как можно быстрее, но он по-прежнему занимает около 10 секунд.Предзагрузчик для запросов Laravel
Я бы хотел показать предварительный загрузчик. Обычно я хотел бы сделать это с помощью Ajax, или JS вызывается, когда (окно) .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.
Я хотел бы, чтобы это выглядело примерно так:
UPDATE:
Это происходит со мной, я мог бы исправить это, возвращая результат как вызов апи
function resultsCall() {
$.ajax({
type: "POST",
url: './myapiroute',
data: "",
success: function() {
console.log("Loaded!");
}
})
};
, но я хотел бы избежать дополнительной безопасности, которая поставляется с вызовами API - передача токенов/заголовков и т. Д. Я ищу решение на основе Laravel/php, если оно есть.
_ «отображаются 10-15K результатов» _ - вам не кажется, что это проблема, которая должна быть исправлена? Ни один пользователь не хочет расчесывать десятки тысяч результатов поиска, отображаемых за один раз ... поэтому имеет смысл реализовать разбиение на страницы для результатов поиска. – CBroe
Результаты разбиты на страницы. Мне нужен предварительный загрузчик. Я уточнил свой вопрос, чтобы быть более ясным. – Leon