Php 用于Laravel请求的预加载程序

Php 用于Laravel请求的预加载程序,php,mysql,ajax,laravel,preloader,Php,Mysql,Ajax,Laravel,Preloader,我有一个内置于Laravel中的应用程序,主页(home.blade.php)上的搜索查询数据库,并在结果页面(results.blade.php)上返回结果。现在该应用程序已经使用了一段时间,有10-15K复杂记录正在多个字段中搜索。我们使用弹性搜索使搜索尽可能快,但仍然需要10秒左右 我想显示一个预加载程序。通常,我会使用ajax或在(窗口)启动JS来完成此操作。加载完成后,如下所示: var progress = setInterval(function () { var $bar = $

我有一个内置于Laravel中的应用程序,主页(home.blade.php)上的搜索查询数据库,并在结果页面(results.blade.php)上返回结果。现在该应用程序已经使用了一段时间,有10-15K复杂记录正在多个字段中搜索。我们使用弹性搜索使搜索尽可能快,但仍然需要10秒左右

我想显示一个预加载程序。通常,我会使用ajax或在(窗口)启动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搜索的记录数量的方法

我希望它看起来像这样:

更新:

我突然想到,我可以通过将结果作为api调用返回来解决这个问题

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


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

请澄清:您的预加载程序工作正常,但您没有得到响应?也许这是控制器代码的问题


如果这是您的问题,并且您不想使用Laravel 5.2传递任何类型的头(如令牌),请在不分配api中间件的情况下定义路由。对于Laravel5.3和5.4,只需在
routes/web.php
中定义您的路由,您就已经设置好了

请澄清:您的预加载程序工作正常,但您没有得到响应?也许这是控制器代码的问题


如果这是您的问题,并且您不想使用Laravel 5.2传递任何类型的头(如令牌),请在不分配api中间件的情况下定义路由。对于Laravel5.3和5.4,只需在
routes/web.php
中定义您的路由,您就已经设置好了

“显示10-15K结果”-您不认为这是应该解决的问题吗?没有用户希望一次浏览显示的成千上万个搜索结果……因此,对搜索结果进行分页可能更有意义。结果是分页的。我需要一个预载器。我更新了我的问题,使之更清晰。“显示了10-15K个结果”-你不认为这是应该解决的问题吗?没有用户希望一次浏览显示的成千上万个搜索结果……因此,对搜索结果进行分页可能更有意义。结果是分页的。我需要一个预载器。我更新了我的问题,使之更清晰。嗨,谢谢你的建议。不,预装载机不工作。我已经更新了问题嗨,谢谢你的建议。不,预装载机不工作。我已经更新了这个问题