如何在Laravel的下拉菜单中加载数据?

时间:2016-08-02 23:36:15

标签: laravel laravel-5

我在模板Laravel中有下拉菜单。

这是包含国家/地区名称的选择列表。

点击按国家/地区后,我需要在最近的下拉菜单中加载城市。

所以,我认为它应该是对控制器Laravel的Ajax请求,即通过id国家获取城市。

也许有任何解决方案?

1 个答案:

答案 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>";
        }
    }
});