Laravel Ajax不返回数据

时间:2018-08-28 12:17:34

标签: php laravel

我无法使用Ajax从Controller检索数据 这是我的代码

触发器

<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(数据)

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

我的路线。

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

我将非常感谢我所能提供的所有帮助。

4 个答案:

答案 0 :(得分:0)

<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')
                }
            });

答案 1 :(得分:0)

尝试此兄弟将您更改为urlroute

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');

答案 2 :(得分:0)

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);
    }
  });
}

答案 3 :(得分:0)

首先请检查您在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);
        }
     });
 }