我有一个内置在Laravel中的应用程序,主页上的搜索(home.blade.php)查询数据库并将结果返回结果页面(results.blade.php)。现在该应用程序已经使用了一段时间,在多个字段中搜索到10-15K个复杂记录。我们使用Elastic搜索尽可能快地进行搜索,但它仍然需要大约10秒。Laravel请求的预加载器
我想显示一个预加载器。通常我会做到这一点使用AJAX,或当(窗口).load完成这样的JS触发:
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仍比上一次(搜索)页面上,尚未加载结果页面,在查询数据库的过程中。
是否有一个简单的解决方案,用于对我的Laravel控制器进行ajax调用,并在发生前显示预加载器?最理想的方式是跟踪Laravel/Eloquent搜索的记录数量。
UPDATE:
它发生,我,我可以通过结果反馈作为API调用解决这个
function resultsCall() {
$.ajax({
type: "POST",
url: './myapiroute',
data: "",
success: function() {
console.log("Loaded!");
}
})
};
但我想避免API调用带来的额外安全性 - 传递令牌/头文件等......我正在寻找基于Laravel/php的解决方案(如果有的话)。
_“有10-15K个结果正在显示”_ - 你不觉得那是应该解决的问题吗?没有用户想要梳理通过一次显示的成千上万的搜索结果......因此,为搜索结果实施分页可能更有意义。 – CBroe
结果分页。我需要一个预加载器。我已经更新了我的问题,以便更清楚。 – Leon