【发布时间】:2016-08-02 23:36:14
【问题描述】:
我在模板 Laravel 中有下拉菜单。
这是带有国家名称的选择列表。
点击国家后,我需要在最近的下拉菜单中加载城市。
所以,我认为应该是向控制器 Laravel 发出 Ajax 请求,通过 id country 获取城市。
也许有什么解决办法?
【问题讨论】:
我在模板 Laravel 中有下拉菜单。
这是带有国家名称的选择列表。
点击国家后,我需要在最近的下拉菜单中加载城市。
所以,我认为应该是向控制器 Laravel 发出 Ajax 请求,通过 id country 获取城市。
也许有什么解决办法?
【问题讨论】:
你可以在 jQuery 中做这样的事情
<select class="country">
<option>Select</option>
<option value="usa">United States</option>
<option value="india">India</option>
<option value="uk">United Kingdom</option>
</select>
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div id="response"></div>
javascript,别忘了把它放在$(document).ready()里面
$("select.country").change(function(){
var selectedCountry = $(".country option:selected").val();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': '{{csrf_token()}}'
}
});
$.ajax({
method: "POST",
url: "countriesList",
data: { country : selectedCountry }
}).done(function(data){
$("#response").html(data);
});
});
然后在您的 Laravel 控制器中或直接从路线中,您可以将国家和城市作为多维数组返回
Route::post('countriesList', function() {
if(Request::ajax()) {
$country = Input::get('country');
$countryArr = [
"usa" => ["New York", "Los Angeles", "California"],
"india" => ["Mumbai", "New Delhi", "Bangalore"],
"uk" => ["London", "Manchester", "Liverpool"]
];
if($country !== 'Select'){
echo "<label>City:</label>";
echo "<select>";
foreach($countryArr[$country] as $value){
echo "<option>". $value . "</option>";
}
echo "</select>";
}
}
});
【讨论】: