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

500 Internal Server Error in Ajax call (Laravel)

我正在尝试使用 ajax 调用获取相关的 select 项。在 selecting 'class' 之后它应该显示相关的 'groups'。但是,我在控制台上收到 500 内部服务器错误。有人会帮我得到预期的结果吗? 录取-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);

   });
});

您的通配符名为 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');

并确保您已导入 类 路由文件。

如我所见,你没有发送数据,所以你不能说 $class_id = Input::get('id');。您的 url 中有 id 参数,只需使用它即可。

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

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

});

你的路由看起来像这样,当我们在路由中添加参数时,它们可以通过函数参数访问。我希望它对你有用。

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

你可以查看 laravel 文档 Laravel route doc

如果还是不行那就 在 html 布局

的头部添加 csrf 令牌,就像这样
<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);
    }
});