【问题标题】:how to solve "500 (Internal Server Error)" (Laravel - ajax)如何解决“500(内部服务器错误)”(Laravel - ajax)
【发布时间】:2020-01-30 03:28:44
【问题描述】:

我在尝试通过 AJAX 获取路由数据时遇到了这个问题。

我想做一个动态选择,根据选择的“学院”,显示属于该学院的“程序”。

这是我的路线

Route::get('selectprogramas/{id}', 'SyllabusController@getProgramas');

这是Programas的模型

    class Programa extends Model
{
    protected $table = 'Programas';

    protected $fillable = [ 'nombre', 'perfil_profesional', 'competencias', 'facultad_id', 
    'perfil_profesional'];

    public function selectprogramas($id){
        return Programa::Where('facultad_id', $id)->get();
    }

}

这是控制器中的函数

public function getProgramas(Request $request, $id){
        if($request->ajax()){
            $programas = Programa::selectprogramas($id);
            return response()->json($programas); 
        }
    }

这是html中的两个select,我用的是Laravel Collective

<div class="form-group col-9 font-weight-bold">
        {{ Form::label('facultad', 'Facultades:') }}
        {{ Form::select('facultad', $facultades, null, ['class' => 'form-control', 'id' => 'facultad']) }}
</div>

    <div class="form-group col-9 font-weight-bold">
        {{ Form::label('programa', 'Programas:') }}
        {!! Form::select('programa', ['placeholder'=>'Selecciona'], null, ['id'=>'programa']) !!}
    </div>

这是我的javascript

$("#facultad").change(function (event){
    console.log("entre!!");
    $.get("../selectprogramas/" + event.target.value + "" ,function(response, facultad){
        $("#programa").empty();
        for(i=0; i<response.length; i++){
            $("#programa").append("<option>"+response[i].nombre+"</option>");
        }
    });
});

我的错误是这样的:

【问题讨论】:

  • 检查 Laravel 日志,或在 .env 中设置 APP_DEBUG=true 以公开有关错误的详细信息。 500 错误意味着某处有有用的错误消息。

标签: javascript ajax laravel


【解决方案1】:

已经解决了! 我在控制器功能中做了这个改变

public function getProgramas(Request $request, $id){
    if($request->ajax()){
        $programas = Programa::where('facultad_id', $id)->get();
        return response()->json($programas); 
    }
}

【讨论】:

  • 如果解决了它,可能的问题是 public function selectprogramas 在您的原始代码中应该是 public static function selectprogramas ,因此可以静态调用它。您的日志中可能存在关于静态调用非静态函数的错误。
猜你喜欢
  • 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
相关资源
最近更新 更多