Ajax调用中的500内部服务器错误(Laravel)

时间:2018-02-27 11:45:40

标签: php jquery ajax laravel laravel-routing

我正在尝试使用ajax调用获取相关的选择项。选择“课程”后,应显示相关的“课程”。但是,我的控制台上出现500内部服务器错误。有人会帮助我取得预期的结果吗? admission-form.blade.php -

<form action="{{ route('admin.students.admission') }}" method="POST" enctype="multipart/form-data">
    {{ csrf_field() }}
<div class="row">
 <div class="col-sm-6">
   <div class="form-group {{ $errors->has('first_admission_class') ? 'has-error' : '' }}">
    <select class="form-control" name="first_admission_class" id="first_admission_class">
        <option value="">Select Class</option>
            @foreach($classes as $class)
                <option value="{{ $class->id }}" {{ (old("first_admission_class") == $class->id ? "selected":"") }}>{{ $class->class_name }}</option>
            @endforeach
    </select>
 </div>
</div>
<div class="col-sm-6">
   <div class="form-group {{ $errors->has('first_admission_class_group') ? 'has-error' : '' }}">
     <select class="form-control" name="first_admission_class_group">

    </select>
    </div>
 </div>
</div>
</form>

Ajax调用脚本:

<script>
  $('#first_admission_class').on('change', function(e){
    console.log(e);
    var class_id = e.target.value;

    $.get('http://localhost/school/public/admin/ajax-group/' + class_id, function(data){
      console.log(data);

    });

  });
</script>

web.php -

Route::group(['prefix' => 'admin', 'as' => 'admin.', 'middleware' => 'auth:admin'], function () {
Route::get('ajax-group/{id}', function(){

    $class_id = Input::get('class_id');
    $groups = AvailableclassGroup::where('availableclass_id', '=', $class_id)->get();
    return Response::json($groups);

   });
});

3 个答案:

答案 0 :(得分:2)

你的路线看起来像这样,当我们在路线中添加param时,它们可以通过函数参数访问。我希望它适合你。

Route::get('ajax-group/{id}', function($id){
 $groups = AvailableclassGroup::where('availableclass_id', '=', $id)->get();
 return Response::json($groups);
 });
});    

您可以查看laravel doc Laravel route doc

如果它仍然不起作用 添加csrf令牌,就像你的html布局一样

<meta name="csrf-token" content="{{ csrf_token() }}">

并按照这样的方式进行ajax调用

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


$.ajax({
    type: 'get',
    url: '/ajax-group/'+ class_id,
    dataType: 'json',
    success: function (data) {
    },
    error: function (data) {
     console.log('Error:', data);
    }
});

答案 1 :(得分:0)

您的通配符名称为id,您将获得class_id所以更改: 并确保您的路线名为admin.students.admission

Route::get('ajax-group/{id}', function(){

    $class_id = Input::get('id');
    $groups = AvailableclassGroup::where('availableclass_id', '=', $class_id)->get();
    return Response::json($groups);

   });
})->name('admin.students.admission');

并确保已在路径文件中导入类。

答案 2 :(得分:0)

正如我所看到的,您没有发送数据,因此您无法说$class_id = Input::get('id');。您的网址中包含id参数,只需使用它即可。

Route::get('ajax-group/{id}', function($class_id){

    $groups = AvailableclassGroup::where('availableclass_id', '=', $class_id)->get();
    return Response::json($groups);

});