2017-02-22 8 views
0

私はLaravelに組み込まれたアプリケーションを持っており、ホームページ(home.blade.php)で検索するとDBに照会し、結果ページ(results.blade.php)に結果を返します。今ではアプリケーションがいくつかの時間のために使用されている10から15キロ複雑なレコードがいくつかのフィールドで検索されている。できるだけ早く検索するために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は前回(検索)ページに残っているので、プリローダーが表示されない場合は、 DBを照会する過程で、まだ結果ページをロードしていません。

私のLaravelコントローラーにajaxコールを発信し、プリローダーを表示する簡単な解決策がありますか?理想的には、Laravel/Eloquentによって検索されたレコードの数を追跡する方法です。 preloader search searching php mockup

UPDATE:

私はそれがこのような何かを見たいのですがそれは私に発生し

私はAPI呼び出しとして結果を返すことによってこの問題を解決する可能性を

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

};

しかし、私は、API呼び出しに付属する特別なセキュリティを避けたいと思います - トークン/ヘッダーなどを渡す...私はLaravel/phpベースのソリューションを探しています。

+1

_ "10-15Kの結果が表示されています" _これは、修正する必要がある問題ではないと思いますか?ユーザーは一度に表示される数千の検索結果を拾い読みしたくないので、検索結果のページネーションを実装する方が合理的かもしれません。 – CBroe

+0

結果は改ページされます。私はプリローダーが必要です。私は私の質問をより明確に更新しました。 – Leon

答えて

0

あなたのプリローダは正常に動作していますが、応答が得られません。コントローラコードの問題かもしれません。

あなたの質問であり、トークンのようなヘッダーをLaravel 5.2を使用して渡す必要がない場合は、apiミドルウェアを割り当てずにルートを定義してください。 Laravel 5.3と5.4については、routes/web.phpにあなたのルートを定義すれば、すでに設定されています。

+0

こんにちは、提案していただきありがとうございます。いいえ、プリローダーが作動していません。私は質問を更新しました – Leon

関連する問題