【发布时间】:2017-08-05 19:50:37
【问题描述】:
我遇到了一个小问题。我正在尝试为我的数据库创建一个过滤器。到目前为止,我想出了这个:
刀片文件:
<input type="text" class="form-control" id="search" name="search" placeholder="Name, NORAD or ID"></input>
<select name="filtername" id="filtername">
<option value="none"></option>
<option value="Falcon">Falcon</option>
<option value="rb">R/B</option>
</select>
Javascript AJAX 调用:
$(document).ready(function() {
$('#search').on('keyup', function() {
$value = $(this).val();
delay(function() {
if ('#search'.length > 3) {
$.ajax({
type: 'get',
url: '{{$launchsitename->site_code}}',
data: {
'search': $value
},
success: function(data) {
$('#launchsatdisplay').html(data);
}
});
}
}, 300);
});
$("#filtername").change(function() {
var filtername = $(this).val();
var dataString = "filtername=" + filtername;
$.ajax({
type: "get",
url: "{{$launchsitename->site_code}}",
data: {
'search': dataString
},
success: function(data) {
$('#launchsatdisplay').html(data);
}
});
});
});
控制器:
if ($request->ajax())
{
$output="";
$launchsitesatellite = DB::table('satellites')
->where(function($q) use ($request) {
$q->orWhere('satname','LIKE','%'.$request->search.'%')
->orWhere('norad_cat_id','LIKE','%'.$request->search.'%')
->orWhere('object_id','LIKE','%'.$request->search.'%');
})
->where('site', $site_code)->get();
if ($launchsitesatellite)
{
$output .='<tr>'.
'<th>'.'Satellite Name'.'</th>'.
'<th>'.'NORAD ID'.'</th>'.
'<th>'.'Object Type'.'</th>'.
'<th>'.'Launch Date'.'</th>'.
'<th>'.'Country'.'</th>'.
'<th>'.'Object ID'.'</th>'.
'<tr>';
foreach ($launchsitesatellite as $key => $launchsitesatellites) {
$output .='<tr>'.
'<td>'.$launchsitesatellites->satname.'</td>'.
'<td>'.$launchsitesatellites->norad_cat_id.'</td>'.
'<td>'.$launchsitesatellites->object_type.'</td>'.
'<td>'.$launchsitesatellites->launch.'</td>'.
'<td>'.$launchsitesatellites->country.'</td>'.
'<td>'.$launchsitesatellites->object_id.'</td>'.
'</tr>';
}
}
return $output;
}
else {
$launchsitesatellite = DB::table('satellites')->where('site', $site_code)->Paginate(40);
return view('pages/launchsite-filter', compact('launchsites', 'launchsitesatellite'));
}
此代码用于对我的控制器进行 AJAX 调用并从数据库中获取结果。上面发布的代码非常适合input。我可以轻松地搜索数据库。唯一的问题是select。每当我选择一个选项时,它都不会返回任何结果。我猜我在控制器中编写 select 的方式有问题,因为我认为 Javascript 不会导致问题。
select 应该读取我的数据库中名为 satellites 的 satname 列并返回过滤结果。
是否有人能够解释为什么select 不起作用或我的代码中的错误在哪里?
【问题讨论】:
-
'search': dataString。你觉得这是什么? -
$request->filterfalcon?这是什么? -
@u_mulder 抱歉 - 这是我试图让它工作的尝试。我现在已经删除了。
-
我再说一遍 -
'search': dataString是什么? -
那么你是否明白
$request->search的价值是filtername=rb,例如。你真的希望通过这个“词”进行搜索吗?
标签: javascript php jquery ajax laravel