Как создать динамические c варианты выбора каналов в laravel? - PullRequest
0 голосов
/ 15 февраля 2020

У меня есть два выбора, первый из которых заполнен выражениями, а другой - шантирами, между которыми есть отношение принадлежит. Я хочу, чтобы при выборе 1-го варианта выбора шантиер соответствовал 2-му, заполненному выражениями, но в моем случае это дает мне пустые данные.

mois.blade. php

//select chantiers
<select class="form-control" id="chantier_id">
  <option selected disabled>Select Location</option>
    @foreach($chantiers as $chantier)
  <option value="{{ $chantier->id }}">{{ $chantier->chantier}}</option>
    @endforeach
</select>
//select ouvrages
<select class="form-control" id="ouvrage_id">
   <option value="0" selected disabled>- Select -</option>
</select>

jQuery

 <script type="text/javascript">
       $(document).ready(function() {
    $('#example').DataTable();
                                  });
        $(document).ready(function(){

            $("#chantier_id").change(function(){
                var chantier = $(this).val(); 

                $.ajax({
                    url: "{{ route('salarie.select') }}",  
                    type: 'post',
                    data: {
                          chantier:chantier,
                          "_token": "{{ csrf_token() }}"
                           },
                    dataType: 'json',
                    success:function(response){
                       console.log(response);
                        var len = response.length;
                        $("#ouvrage_id").empty();
                        for( var i = 0; i<len; i++){
                            var id = response[i]['id'];
                            var ouvrage = response[i]['ouvrage'];
                            $("#ouvrage_id").append("<option value='"+id+"'>"+ouvrage+"</option>");
                        }
                    }
                });
            });
        });
    </script>

SalarieController . php

  public function select(request $request){
      $ouvrages = Ouvrage::where('chantier_id',$request->chantier_id);
        return response()->json(['options'=>$ouvrages]);
    }

web. php

Route::post('/select','SalarieController@select')->name('salarie.select'); 
Route::get('/mois','SalarieController@mois'); 

1 Ответ

0 голосов
/ 15 февраля 2020

Вам нужно jQuery .parse (ответ), чтобы проанализировать json

и изменить l oop на $ .each, чтобы сделать его проще и менее сложным.

 <script type="text/javascript">
   $(document).ready(function() {
     $('#example').DataTable();

        $("#chantier_id").change(function(){
            var chantier = $(this).val(); 

            $.ajax({
                url: "{{ route('salarie.select') }}",  
                type: 'post',
                data: {
                      chantier:chantier,
                      "_token": "{{ csrf_token() }}"
                       },
                dataType: 'json',
                success:function(response){
                   console.log(jQuery.parse(response));
                    $("#ouvrage_id").empty();
                    $.each( jQuery.parse(response), function( key, value ) {
                      $("#ouvrage_id").append("<option value='"+key+"'>"+value+"</option>");
                     });

                }
            });
        });
    });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...