Я делаю поисковый фильтр, фильтруя состояния, категории, уровни и возраст. Пользователь выберет значение, используя поля выбора и текстовое поле. Как только пользователь нажмет кнопку, ajax отправит информацию на контроллер для фильтрации. Код для формы ниже:
<div class="form-group">
<div class="row">
<div class="col-lg-2">
{{ Form::label('negeri_lahir_peg', 'Negeri Lahir Pegawai') }}
</div>
<div class="col-lg-2">
{{ Form::select('negeri_lahir', $negeri, '', ['class' => 'form-control select2', 'placeholder' => '--pilih--']) }}
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-lg-2">
<label for="kategori">Kategori:</label>
</div>
<div class="col-lg-3">
<select name="kategori" class="form-control select2" style="width:250px">
<option value="">-- pilih --</option>
@foreach ($categories as $key => $value)
<option value="{{ $key }}">{{ $value }}</option>
@endforeach
</select>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-lg-2">
<label for="pang">Pangkat:</label>
</div>
<div class="col-lg-3">
<select name="pangkat" class="form-control select2"style="width:250px">
<option>-- pilih --</option>
</select>
</div>
</div>
</div>
<div class="form-group">
<div class="row">
<div class="col-lg-2">
{{ Form::label('umur_peg', 'Umur') }}
</div>
<div class="col-lg-1">
{{ Form::text('umur', '', ['class' => 'form-control', 'placeholder' => '']) }}
</div>
<div class="col-lg-3">
{{ Form::label('tahun', 'tahun ke atas') }}
</div>
</div>
</div>
Кнопка для отправки значения в ajax:
<button id="cari" class="btn btn-sm btn-primary"> Cari </button>
Я пытался отфильтровать negeri_lahir только в приведенном ниже коде ajax, но в режиме отладчика появилось сообщение 'negeri_lahir is undefined'.
<script type="text/javascript">
$( "#cari" ).click(function() {
var negeri = $("#negeri_lahir").val();
$.ajax({
url: '{{ url('calon') }}',
data: 'negeri_lahir=' + negeri ,
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>
Код контроллера следующий:
$query = DB::table('itemregistrations')
// ->join('categories', 'itemregistrations.categoryid', '=','categories.categoryid')
// ->join('operasi', 'itemregistrations.operasiid', '=', 'operasi.operasiid')
->select('itemregistrations.ItemRegistrationID','itemregistrations.name', 'itemregistrations.Nobadan');
if(request('umur')) {
$query->whereRaw('YEAR(CURDATE()) - lahir_yy >= ?', [request('umur')]);
}
if(request('negeri_lahir')) {
$query->where('NegeriID', request('negeri_lahir'));
}
if(request('kategori')) {
$query->where('CategoryID', request('kategori'));
}
if(request('pangkat')) {
$query->where('OperasiID', request('pangkat'));
}
$newitem = $query->get();
// dd($newitem);
return response::json($newitem);
Как правильно передать значение фильтра по пользователям в ajax, чтобы оно могло обрабатываться контроллером? благодарю вас.