根据拉雷韦尔的选定省份获取城市列表 [英] Getting City list base on Selected Province in laravel
问题描述
如何获取所选省份的城市列表?
How can I get my city lists base on selected province?
我的控制器:
public function index() {
$province = RajaOngkir::Provinsi()->all();
$city = RajaOngkir::kota()->all();
return view('welcome', compact('province', 'city'));
}
我的刀片:
<div>
<select name="province" id="">
<option class="form-control" value="">Select Province</option>
@foreach ($province as $info)
<option value="{{ $info['province_id'] }}">{{ $info['province'] }}</option>
@endforeach
</select>
<select name="city" id="">
<option class="form-control" value="">Select City</option>
@foreach ($city as $info)
<option value="{{ $info['city_id'] }}">{{ $info['city_name'] }}</option>
@endforeach
</select>
</div>
屏幕截图:
PS:我的数据来自第三方网站,我的数据库中没有数据,包括country
province
city
等.不幸的是,正如我向其他问题和网站建议的那样,这些解决方案对我不起作用
PS: My data coming from third-party website and there is no data in my database including country
province
city
etc. As I was suggested to other question and website unfortunately those solutions will not work for me.
我的controller
:
public function index() {
$province = RajaOngkir::Provinsi()->all();
$city = RajaOngkir::kota()->all();
return view('welcome', compact('province', 'city'));
}
public function getCityList($province_id)
{
$city = RajaOngkir::kota()->all()->where("province_id",$province_id)->get();
return response()->json($city);
}
我的route
:
Route::get('/', 'rajaongkirController@index');
Route::get('/get-city-list/{province_id}','rajaongkirController@getCityList');
我的view (blade
:
<div class="col-md-6">
<select name="province" id="province">
<option class="form-control" value="">Select Province</option>
@foreach ($province as $info)
<option value="{{ $info['province_id'] }}">{{ $info['province'] }}</option>
@endforeach
</select>
<select name="city" id="">
<option class="form-control" value="">Select City</option>
</select>
</div>
<script type="text/javascript">
$(document).ready(function() {
$('select[name="province"]').on('change', function() {
var provinceID = $(this).val();
if(provinceID) {
$.ajax({
url: '/get-city-list/'+encodeURI(provinceID),
type: "GET",
dataType: "json",
success:function(data) {
$('select[name="city"]').empty();
$.each(data, function(key, value) {
$('select[name="city"]').append('<option value="'+ value +'">'+ value +'</option>');
});
}
});
}else{
$('select[name="city"]').empty();
}
});
});
</script>
推荐答案
首先,将控制器索引函数更改为this-
First, change your controller index function to this-
public function index() {
$province = RajaOngkir::Provinsi()->all();
return view('welcome', compact('province'));
}
第二,使用 @rahulsm的链接进行onchange()
ajax函数调用,并选择一个$province_id
.您调用的控制器功能可以是-
Second, make a onchange()
ajax function call as @rahulsm's link, with a selected $province_id
. Your called controller function can be-
public function getCityList($province_id)
{
$city = RajaOngkir::kota()->where("province_id",$province_id)->get();
return response()->json($city);
}
您的网址路由文件可能是-
And your url route file might be-
Route::get('api/get-city-list/{province_id}','APIController@getCityList');
然后在您的视图中将其删除-
And in your view remove this-
<select name="city" id="">
<option class="form-control" value="">Select City</option>
@foreach ($city as $info)
<option value="{{ $info['city_id'] }}">{{ $info['city_name'] }}</option>
@endforeach
</select>
对此进行处理,并用ajax请求/数据填充此数据.
to this and filled this data with ajax request/data.
<select name="city" id="">
<option class="form-control" value="">Select City</option>
</select>
这篇关于根据拉雷韦尔的选定省份获取城市列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!