我在模板Laravel中有下拉菜单。
这是包含国家/地区名称的选择列表。
点击按国家/地区后,我需要在最近的下拉菜单中加载城市。
所以,我认为它应该是对控制器Laravel的Ajax请求,即通过id国家获取城市。
也许有任何解决方案?
答案 0 :(得分:2)
你可以在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>";
}
}
});