我正在一个laravel网站上工作,该网站具有搜索航班/酒店等基本功能。 我想做的一件事是在用户提交搜索信息后显示加载页面,以便在API运行时发生一些动画。
问题是我无法想出一种方法来显示页面并同时运行控制器代码。我一直在尝试从PagesController将FlightsController传递给视图
PagesController.php
public function flight_search( Request $request )
{
$FlightsController = new FlightsController();
return view('flights.flight-search', [
'FlightsController' => $FlightsController,
'user_input' => $request
]);
}
然后在航班搜索视图中调用该功能
飞行search.blade.php
@extends('app')
@section('content')
<div class="container-fluid">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="page-heading">Searching for available tickets...</div>
</div>
</div>
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="progress">
<div class="progress-bar progress-bar-striped progress-bar-warning active" role="progressbar" aria-valuemin="0" aria-valuemax="100" style="width:100%">
</div>
</div>
</div>
</div>
</div>
{{ $FlightsController->search( $user_input ) }}
@endsection
但是页面加载总是等待函数调用完成完成,而search()方法本身返回带有搜索结果的下一个视图。
关于我应该如何处理的任何建议?
答案 0 :(得分:2)
服务器只会在整个请求处理完毕后才会发送响应,因此您尝试做的事情不会起作用。这样做的常见解决方案是显示加载屏幕,向服务器发送AJAX请求以获取结果,并且一旦加载结果,隐藏加载屏幕并显示结果。当然,这必须使用Javascript,而不是PHP。
所以场景将是: