【问题标题】:500 Internal Server Error in Ajax call (Laravel)Ajax 调用中的 500 内部服务器错误 (Laravel)
【发布时间】:2018-08-07 01:20:10
【问题描述】:

我正在尝试使用 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);

   });
});

【问题讨论】:

  • 您可以尝试直接使用浏览器执行相同的请求吗?你得到什么结果?
  • 设置错误报告以获取有关错误stackoverflow.com/questions/1053424/…的适当信息
  • @MarvinFischer ,是的,当我从下拉列表中选择“类”时,我正在直接使用浏览器执行相同的请求,然后相关的“组”显示为空。和控制台显示 500 内部服务器错误。
  • @GaneshGhalame 在我的 php.ini 中 - display_errors 已经开启。
  • 您能否在storage/logs/laravel.log(日志文件)或浏览器的网络选项卡中查看日志以获取错误信息

标签: php jquery ajax laravel laravel-routing


【解决方案1】:

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

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

你可以查看 laravel doc 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);
    }
});

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      正如我所见,你没有发送数据,所以你不能说$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);
      
      });
      

      【讨论】:

        猜你喜欢
        • 2017-04-12
        • 2020-02-12
        • 2018-04-16
        • 2016-03-24
        • 1970-01-01
        • 2019-05-12
        • 2015-09-20
        • 2023-03-04
        • 1970-01-01
        相关资源
        最近更新 更多