Laravel Ajax не возвращает данные - PullRequest
0 голосов
/ 28 августа 2018

У меня проблемы с получением данных из контроллера с помощью ajax это мой код

триггер

<select id="course_select" name="course_select" class="form-control" required autofocus value="{{old('course_select')}}" onchange="getCourse()">

Мой раздел ajax

function getCourse(){
  var id=document.getElementById('course_select').value;
  alert(id);
  $.ajax({
    type:'get',
    url:'getCourseLessons/'+id,
    datatype:'json',
    success:function(data){
      console.log(data);
      alert(data.lessons);
    }
  });
}

и мой контроллер

public function getCourseLessons($id){
      $lessons = DB::table('lessons')->select('id','Lesson_name')->where('course_id','=',$id)->get();
      return response()->json(array('lessons'=>$lessons));
}

Результаты console.log (data)

console.log(data)
ReferenceError: data is not defined[Learn More]

Мои маршруты.

Route::get('/getcourselessons/{id}','AdminController@getCourseLessons');

Я буду признателен за любую помощь, которую я могу получить.

Ответы [ 4 ]

0 голосов
/ 28 августа 2018

Прежде всего, пожалуйста, проверьте маршрут, который вы использовали в Route / Web.php, он должен быть таким:

Route::get('getCourseLessons/{id}','YourController@getCourseLessons');

Проверьте контроллер.

public function getCourseLessons($id){
  $lessons = \DB::table('lessons')->select('id','Lesson_name')->where('course_id',$id)->get();
  return response()->json(array('lessons'=>$lessons));
}

Согласно вашему ajax-коду, но вы также можете попробовать это.

function getCourse(){
  var id=$('#course_select').val();
  alert(id);
     $.ajax({
       type:'get',
       url:'{{url('getCourseLessons')}}/'+id,
       datatype:'json',
       success:function(data){
           console.log(data);
           alert(data.lessons);
        }
     });
 }
0 голосов
/ 28 августа 2018

попробуйте этот братан изменить вас url или route

function getCourse(){
 var id=document.getElementById('course_select').value;
 var url = '{{ url('getCourseLessons/')}}/'+id;
 alert(id);
 $.ajax({
 type:'get',
 url:url,
 datatype:'json',
  success:function(data){
   console.log(data);
   alert(data.lessons);
   }
  });
}

измени свой route

Route::get('getcourselessons/{id}','AdminController@getCourseLessons');
0 голосов
/ 28 августа 2018

1 - проверить свой маршрут

Route::get('/getCourseLessons/{id}','YourController@getCourseLessons');

2 - изменить атрибуты Ajax

function getCourse(){
  var id=document.getElementById('course_select').value;
  alert(id);
  $.ajax({
    url: '{{ url("getCourseLessons") }}',
    type:'get',
    datatype:'json',
     data: {
            "id": id,
            "_token": "{{ csrf_token() }}"
          },
    success:function(data){
      console.log(data);
      alert(data.lessons);
    }
  });
}
0 голосов
/ 28 августа 2018
<select id="course_select" name="course_select" class="form-control"  onchange="getCourse()">
   <option>hi</option>
   <option>hello</option>
</select>

Кажется, в вашем выборе есть проблема, так как приведенный выше код будет выводить проверьте следующее

 value="{{old('course_select')}}"

и еще одна вещь, которую я не вижу в CSRF

Добавить где-нибудь в вашем скрипте

$.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...