Laravel请求的预加载器

时间:2017-02-22 12:02:36

标签: php mysql ajax laravel preloader

我有一个在Laravel中构建的应用程序,主页上的搜索(home.blade.php)查询数据库并在结果页面上返回结果(results.blade.php)。现在,应用程序已经使用了一段时间,在许多字段中搜索了10-15K复杂记录。我们使用弹性搜索尽可能快地进行搜索,但仍需要大约10秒钟。

我想显示预装载器。通常我会使用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搜索的记录数量的方法。

我希望它看起来像这样: preloader search searching php mockup

  

更新:

我发现我可以通过将结果作为api调用返回来解决这个问题

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

};

但是我想避免API调用带来的额外安全性 - 传递令牌/标题等...如果有的话,我正在寻找基于Laravel / php的解决方案。

0 个答案:

没有答案