Laravel中的动态相关下拉选择

时间:2020-06-05 20:49:47

标签: php jquery ajax laravel forms

嗨,每个人我都在从事动态依赖下拉列表的选择,但是当我在State列中选择某项时,我的城市列始终为空,所以我无法实现所需的输出。

这是我的控制器 specvil.php

 public function  index  () {


        $ville=Vil::orderBy('Ville','desc')->get();

        return view ('index',['vi'=>$ville]);
    } 

public function deleg(Request $request)

    {
        $delegation = DB::table("delegation")
        ->where("ville_id",$request->ville_id)
        ->pluck("ville","id");
        return response()->json($delegation);
    }

这是 index.php 形式的视图:

 <form action="{{route('ghof')}}" method="get"> 
                         {{ csrf_field() }}
                          <select type="text" class="search-field location" name="spec" id="s" 
                         value="spec" placeholder ="Spécialités">
                         <option selected></option>
                         @foreach($sp as $ss)
                         <option value=" {{$ss->Spécialité}}"> {{$ss->Spécialité}}</option>
                         @endforeach
                         </select> 
                         <select type="text" class="search-field location" name="Région" id="Région" 
                         value="Région">
                         <option selected></option>
                         @foreach($vi as $vv)
                         <option value="{{$vv->Ville}}">{{$vv->Ville}}</option>
                         @endforeach
                         </select>
                         <select type="text" class="search-field location" name="ville" id="ville">
                         </select>
                         <button class="search-btn" type="submit" id="search"> Recherche </button>
                        </div>
                        </form>

这是脚本:

<script type="text/javascript">
    $('#Région').change(function(){
    var countryID = $(this).val();    
    if(countryID){
        $.ajax({
           type:"GET",
           url:"{{url('deleg')}}?ville_id="+countryID,
           success:function(res){               
            if(res){
                $("#ville").empty();
                $("#ville").append('<option>Select</option>');
                $.each(res,function(key,value){
                    $("#ville").append('<option value="'+key+'">'+value+'</option>');
                });

            }else{
               $("#ville").empty();
            }
           }
        });
        </script>

最后这是路线:

Route::get('/index','specvil@index');
Route::get('deleg','specvil@deleg');

1 个答案:

答案 0 :(得分:1)

也许这是问题所在。您正在传递Ville desc作为选项值,而不是传递Ville id,这将导致您将Ville desc与控制器的deleg()方法中的Ville id进行匹配。