我想根据用户选择的某些条件创建高级搜索过滤人员数据。该应用程序是使用laravel 5开发的。我正在使用ajax函数和if语句查询数据以过滤条件。结果会出现,但不会过滤if语句中的任何条件。
过滤条件的控制器是这样的:
public function kakitangan(Request $request)
{
$query = DB::table('itemregistrations')
->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');
if ($request->section != ""){
$query->where('SectionID', $request->section);
}
$newitem = $query->get();
return response::json($newitem);
}
我也尝试过:
$query = DB::table('itemregistrations')
->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');
if(request('section')) {
$query->where('SectionID', request('section'));
}
$newitem = $query->get();
return response::json($newitem);
但是结果是相同的。itemregistrations中的所有数据都出现在输出页面中。尽管我选择了其他部分条件。
这是可供选择的查看页面代码:
<div class="row">
<div class="col-lg-2">
{{ Form::label('Seksyen', 'Seksyen') }}
</div>
<div class="col-lg-2">
{{ Form::select('section', $sections, '', ['class' => 'form-control select2', 'placeholder' => '--pilih--']) }}
</div>
</div>
</div>
选择ID来自控制器功能:
$sections = Section::pluck('sectionname', 'SectionID');
//sent to html view
return view('carian.index', compact('sections'));
调用ajax函数以获取查询的按钮:
<button class="btn btn-primary btn-md" id="cari">Cari</button>
结果代码出现:
<script type="text/javascript">
$( "#cari" ).click(function() {
var seksyen = $("#section").val();
$.ajax({
url: '{{ url('kakitangan') }}',
data: {'section': seksyen},
dataType: 'json',
success: function (data) {
console.log(data);
$('#datatable tr').not(':first').not(':last').remove();
var html = '';
for(var i = 0; i < data.length; i++){
html += '<tr>'+
'<td>' + data[i].name + '</td>' +
'</tr>';
}
$('#datatable tr').first().after(html);
},
error: function (data) {
}
});
});
</script>
当用户选择一个部分时,仅该部分的职员会出现。但是现在,在选择任何部分时所有人员都会出现。
我只是尝试使用controller中的this来测试段值是否正确传递给了控制器:
$try=$request->input('section');
return response::json($try);
结果为空数组。没有值传递?节值未正确传递吗?如何解决这个问题?
答案 0 :(得分:1)
在执行GET请求时,您将该节作为发布参数传递。 使用jQuery,您可以使用以下命令将其作为查询字符串发送:
var seksyen = $("#section").val();
$.ajax({
url: '{{ url('kakitangan') }}?' + $.param({'section': seksyen}),
dataType: 'json',
...
在您的控制器中,您还可以使用针对请求的has
方法来明确检查请求是否包含查询字符串
if(request()->has('section')) {
$query->where('SectionID', request('section'));
}
编辑:
使用laravel集体表单助手,您可以使用以下内容指定字段ID(请注意第四个参数ID)
{{ Form::select('section', $sections, '', ['id' => 'section', 'class' => 'form-control select2', 'placeholder' => '--pilih--']) }}