Я использую laravel 5.6 и сделал выпадающий выбор, но он не сработал. Я выбрал провинцию в выпадающем меню, но в меню города не отображались данные городов.
Это мой контроллер:
public function province()
{
$prov = Province::orderBy("provinsi.id","ASC")
->pluck("name","id");
return view('auth.register',compact('prov'));
}
public function cities($id)
{
$city = City::where("id_provinsi","=",$id)
->pluck("city_name","id");
return json_encode($city);
}
Это мой маршрут:
Route:: get('/register', 'Auth\RegisterController@province');
Route:: get('/register/cities/{id}', 'Auth\RegisterController@cities');
Это мой взгляд:
<div class="form-group row">
<label for="prov" class="col-md-4 col-form-label text-md-right">{{ __('Provinsi') }}</label>
<div class="col-md-6">
<select name="prov" class="form-control">
<option value="">=== Choose Province ===</option>
@foreach ($prov as $key=>$value)
<option value="{{$key}}">{{$value}}</option>
@endforeach
</select>
</div>
</div>
<div class="form-group row">
<label for="city" class="col-md-4 col-form-label text-md-right">{{ __('City') }}</label>
<div class="col-md-6">
<select name="cities" class="form-control"> </select>
</div>
</div>
Это мой JavaScript:
<script type="text/javascript">
$(document).ready(function()
{
$('select[name="prov"]').on('change', function() {
var provID = $(this).val();
if(provID) {
$.ajax({
url: '/register/cities/'+provID,
type: "GET",
dataType: "json",
success:function(data) {
$('select[name="cities"]').empty();
$.each(data, function(key, value) {
$('select[name="cities"]').append('<option value="'+ key +'">'+ value +'</option>');
});
}
});
}else{
$('select[name="cities"]').empty();
}
});
});
</script>
Я получу данные JSON, если открою URL / регистр / города / (любой идентификатор провинции).