javascript - 在 laravel mvc 中更新视图而不重新加载
问题描述
我在我的项目中使用 Laravel 5.4,我正在制作一个简单的仪表板,其中包含一些显示来自 mySql 数据库的信息的图表。
我将一些下拉列表作为过滤器,以便用户可以根据需要过滤仪表板。我将下拉列表放在一个表单中,然后我从没有 ajax 的控制器中填充它们,只需使用 get 方法和 bootstrap-select。
这是我的代码的样子:
<form id="filter" method="GET">
{{ csrf_field() }}
<select class="selectpicker " name="siteF" id="siteF" data-width="100px" data-actions-box="true" data-style="btn-warning" title="Site">
<option>All</option>
@foreach($SiteFilter as $site)
<option>{{ $site->site_name }}</option>
@endforeach
</select>
<select class="selectpicker " name="yearF" id="yearF" data-size="5" data-width="100px" data-actions-box="true" data-style="btn-warning" title="Year">
<option>All</option>
@foreach($YearFilter as $year)
<option>{{ $year->year }}</option>
@endforeach
</select>
<select class="selectpicker " name="operatorF" id="operatorF" data-size="5" data-width="100px" data-actions-box="true" data-style="btn-warning" title="Operator">
<option>All</option>
@foreach($OperatorFilter as $operator)
<option>{{ $operator->operator }}</option>
@endforeach
</select>
<select class="selectpicker " name="parkingF" id="parkingF" data-width="100px" data-actions-box="true" data-style="btn-warning" title="Parking">
<option>All</option>
@foreach($ParkingFilter as $parking)
<option>{{ $parking->parking }}</option>
@endforeach
</select>
<button type="submit" class="btn bg-deep-orange waves-effect">
<i class="material-icons">search</i>
</button>
</form>
这是控制器中我填写列表的部分:
//----------------------------------- 1/ filter of sites-----------------------------------
$SiteFilter= DB::table('transactions')
->select('site_name')
->distinct()
->get();
//-----------------------------------end of filter of sites-----------------------------------
//----------------------------------- 2/ filter of years-----------------------------------
$YearFilter= DB::table('transactions')
->select(DB::raw("YEAR(transaction_created_at) as year"))
->distinct()
->get();
//-----------------------------------end of filter of years-----------------------------------
//----------------------------------- 3/ filter of operators-----------------------------------
$OperatorFilter= DB::table('transactions')
->select('operator_id as operator')
->distinct()
->get();
//-----------------------------------end of filter of operators-----------------------------------
//----------------------------------- 4/ filter of parkings-----------------------------------
$ParkingFilter= DB::table('transactions')
->select('parking')
->distinct()
->get();
//-----------------------------------end of filter of parkings-----------------------------------
这是一个图表示例:
//-----------------------------------Donutchart: number of transactions per operator-----------------------------------
$donutData= DB::table('transactions')
->select('operator_id as operator',DB::raw('count(id) as num'))
->where(function ($query) {
if((Input::get('operatorF') != "")&&(Input::get('operatorF') != "All"))
$query->where('operator_id','=',Input::get('operatorF') );
if((Input::get('parkingF') != "")&&(Input::get('parkingF') != "All"))
$query->where('parking','=',Input::get('parkingF') );
if((Input::get('yearF') != "")&&(Input::get('yearF') != "All"))
$query->where('transaction_created_at', '>=',(string)Input::get('yearF'));
if((Input::get('siteF') != "")&&(Input::get('siteF') != "All"))
$query->where('site_name','=',Input::get('siteF') );
})
->groupby('operator')
->orderby('operator')
->get();
$donut_data='[';
foreach($donutData as $rec)
{
$donut_data=$donut_data.'{"label":'.$rec->operator.',"value":'.$rec->num.'},';
}
$x=strlen($donut_data);
$donut_data[$x-1]=']';
//-----------------------------------end of Donutchart: number of transactions per operator-----------------------------------
使用此代码返回的响应将发送到 javascript 以制作圆环图。
所以我的问题是我应该怎么做才能使用过滤器而不刷新我的仪表板页面实际上在重新加载页面时处于醋栗状态我失去了下拉过滤器的最后选择所以我用户无法分辨他使用的过滤器和值。而且我不知道如何在我的项目中实现 ajax。有什么帮助吗?
先感谢您..
解决方案
推荐阅读
- ios - 如何在应用委托中更改应用语言?
- graphql - 我应该如何在 graphQL 查询中提取最大值或最新的时间戳数据
- android-recyclerview - recyclerView 中的 Exoplayer 出现内存不足异常
- python - ValueError:对已关闭文件的 I/O 操作。-- For 循环
- azure - 无法批量加载,因为无法打开文件“File.csv”。操作系统错误代码 5(访问被拒绝。)
- firebase - 在 Firebase 中验证电子邮件时的日志分析事件
- kubernetes - 学习kubernetes的范围是什么?
- reactjs - 如何在 React 中使用 Typescript 分配变量之前声明一个变量,而没有“类型中缺少索引签名”错误
- docker - hyperledger fabric byfn.sh up 失败,脚本 scripts.sh 未找到
- php - 数组中的逗号分隔值