Laravel — вызов Ajax не отвечает

#javascript #ajax #laravel #laravel-5

#javascript #ajax #laravel #laravel-5

Вопрос:

Я пытаюсь опубликовать данные из выпадающего списка и отправил запрос с помощью Ajax. Он отлично работает на локальном хостинге, но не работает должным образом на общем хостинге. У меня есть 3 выпадающих списка, и значение изменяется в соответствии со значениями, выбранными из родительского dropbox. Например: марка автомобиля (Audi) -> Модель автомобиля -> (A4, A5, Q5 и т.д. Модели audi) -> год выпуска (19XX — 2019)

Я могу только выбрать марку, но я не могу получить какие-либо данные из выбранной марки автомобиля.

home.blade.php

 <div class="form-group">

  <select   class="form-control dynamic"  name="Make"  id="Make" data-dependent='Model'>
    @foreach($carLists as $carMake)
    <option value="{{$carMake->Make}}">{{$carMake->Make}} </option>

    @endforeach
  </select>
</div>

<div class="form-group">

  <select   class="form-control dynamic"  name="Model" id="Model"  data-dependent='Year'>
    <option value="">Select Model</option>
  </select>
</div>


<div class="form-group">

  <select   class="form-control dynamic" name="Year" id="Year"  data-dependent='Body'>
    <option value="">Select Manufacturing year</option>
  </select>
</div>

<script>
$(document).ready(function(){

 $('.dynamic').change(function(){
  if($(this).val() != '')
  {
   var select = $(this).attr("id");
   var value = $(this).val();
   var dependent = $(this).data('dependent');
   var _token = $('input[name="_token"]').val();
   $.ajax({
      url:"{{ route('pagescontroller.fetch') }}",
    method:"POST",
    data:{select:select, value:value, _token:_token, dependent:dependent},
    success:function(result)
    {
     $('#' dependent).html(result);
    }

   })
  }
 });

 $('#Make').change(function(){
  $('#Model').val('');
  $('#Year').val('');
   $('#Make').val($(this).val());
   console.log($('#HidMake'));
 });

 $('#Model').change(function(){
  $('#Year').val('');
 });

});
</script>
  

PageController.php

 class PagesController extends Controller
{

          function fetch(Request $request)
          {
           $select = $request->get('select');
           $value = $request->get('value');
           $dependent = $request->get('dependent');
           $data = DB::table('carLists')
             ->where($select, $value)
             ->groupBy($dependent)
             ->get();
           $output = '<option value="">Select '.ucfirst($dependent).'</option>';
           foreach($data as $row)
           {
            $output .= '<option value="'.$row->$dependent.'">'.$row->$dependent.'</option>';
           }
           echo $output;
          }
  

Маршруты (web.php )

 Route::post('inc/sidebar/fetch', 'PagesController@fetch')->name('pagescontroller.fetch');
  

Я много пытаюсь, но понятия не имею, что здесь происходит не так, однако на локальном хостинге все работает нормально.

спасибо, что уделили время.

Комментарии:

1. то, что вы получили в ответе ajax, означает 404 или что-то еще. проверьте на вкладке сети вашего браузера или в консоли

2. an object { }

3. повторите что-то в вашей функции контроллера и умрите; это

4. и я также получил: Ошибка исходной карты: запрос не выполнен со статусом 404 URL ресурса: stagingcars.com/local/bootstrap.css URL исходной карты: bootstrap.min.css.map[Узнать больше]

5. это не причина, это просто предупреждение.

Ответ №1:

Попробуйте изменить URL на

 var url = APP_URL   '/inc/sidebar/fetch';
  

и установить заголовок

  headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
  

вместо

  var _token = $('input[name="_token"]').val();
  

и дайте мне знать, какой результат вы получаете для этого.

Комментарии:

1. привет, я разобрался с проблемой. Проблема заключалась в имени таблицы. Я неправильно написал имя таблицы в контроллере. Но спасибо за вашу помощь