Php Laravel ajax post返回500个内部服务器错误
我想在从文本框的下拉列表中选择一个值后,通过AJAX请求加载一些数据。但是,从下拉列表中选择后,它将显示Php Laravel ajax post返回500个内部服务器错误,php,jquery,ajax,laravel,laravel-5.2,Php,Jquery,Ajax,Laravel,Laravel 5.2,我想在从文本框的下拉列表中选择一个值后,通过AJAX请求加载一些数据。但是,从下拉列表中选择后,它将显示500(内部服务器错误)。我如何解决它 以下是我的AJAX代码: $('#teacher').on('change',function(e){ var tech_id = $('#teacher option:selected').attr('value'); $.ajaxSetup({ headers: { 'X-CSRF-TOKE
500(内部服务器错误)
。我如何解决它
以下是我的AJAX代码:
$('#teacher').on('change',function(e){
var tech_id = $('#teacher option:selected').attr('value');
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: "POST",
url: "{{url('ajaxteach')}}",
data: {
tech_id: tech_id
},
success: function(data) {
var json_obj = jQuery.parseJSON(data);
$('#credit_taken').val(json_obj.credit_taken);
$('#remaining_credit').val(json_obj.remaining_credit);
}
});
});
这是我的控制器
public function get_teach(Request $request)
{
$tech_id = $request::input(['tech_id']);
$teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();
return Response::json($teachers);
}
路线如下:
Route::post('ajaxteach', [
'uses' => 'CourseController@get_teach',
'as' => 'ajaxteach',
]);
在jqueryajax上调用传递
teach_id: teach_id
控制器查看tech\u id
您也忘记了query()
,应该是正确的
$tech_id = $request::input(['teach_id']);
$teachers= \App\Teacher::query()->where('teacher_id','=',$teach_id)->get();
在jqueryajax上调用传递
teach_id: teach_id
控制器查看tech\u id
您也忘记了query()
,应该是正确的
$tech_id = $request::input(['teach_id']);
$teachers= \App\Teacher::query()->where('teacher_id','=',$teach_id)->get();
你不应该这样做:
$request::input(['tech_id'])代码>
你有一个对象,所以你不应该用静态的方法得到它。您可以对$request
对象使用get()
方法:
$request->get('tech_id')代码>
因此,整个控制器方法是:
public function get_teach(Request $request)
{
$tech_id = $request->get('tech_id');
$teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();
return Response::json($teachers);
}
你不应该这样做:
$request::input(['tech_id'])代码>
你有一个对象,所以你不应该用静态的方法得到它。您可以对$request
对象使用get()
方法:
$request->get('tech_id')代码>
因此,整个控制器方法是:
public function get_teach(Request $request)
{
$tech_id = $request->get('tech_id');
$teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();
return Response::json($teachers);
}
试试这个,在你的原始函数中有一些看起来像潜在的问题。否则,您需要发布错误的详细信息
public function get_teach(Request $request)
{
$tech_id = $request -> tech_id;
$teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();
return response() -> json($teachers);
}
试试这个,在你的原始函数中有一些看起来像潜在的问题。否则,您需要发布错误的详细信息
public function get_teach(Request $request)
{
$tech_id = $request -> tech_id;
$teachers= \App\Teacher::where('teacher_id','=',$tech_id)->get();
return response() -> json($teachers);
}
您可以随时查看laravel.log(storage/logs/laravel.log)
默认情况下,laravel使用“id”作为主键。
如果您没有使用,则应在应用程序\教师模型上设置:
班主任口若悬河{
受保护$primaryKey='teacher_id';
}
因此,您可以在控制器中使用:
$teachers=\App\Teacher::find($tech\u id)代码>您可以随时查看laravel.log(storage/logs/laravel.log)
默认情况下,laravel使用“id”作为主键。
如果您没有使用,则应在应用程序\教师模型上设置:
班主任口若悬河{
受保护$primaryKey='teacher_id';
}
因此,您可以在控制器中使用:
$teachers=\App\Teacher::find($tech\u id)代码>我最近一直在研究这个问题。您已将标题“X-CSRF-TOKEN”添加到ajax请求中,如代码所示:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
但是,如果忘记将以下代码添加到页眉,则其值可能为空。尝试在头标签中添加以下内容:
<meta name="csrf-token" content="{{ csrf_token() }}" />
这可能会解决。我最近一直在研究这个问题。您已将标题“X-CSRF-TOKEN”添加到ajax请求中,如代码所示:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
但是,如果忘记将以下代码添加到页眉,则其值可能为空。尝试在头标签中添加以下内容:
<meta name="csrf-token" content="{{ csrf_token() }}" />
这可能会解决。对不起,输入错误。。但仍然会出现同样的错误!我已经添加了query(),但没有更改,仍然得到相同的错误。很抱歉,输入错误。。但仍然会出现同样的错误!我已经添加了query(),但没有任何更改,仍然得到相同的错误。如果您得到500,并且您处于开发环境中,那么您可以检查ajax的响应(来自服务器),例如在Chrome hit F12中,然后重新运行页面。然后进入chrome开发工具上的“网络”选项卡,找到请求文件(红色)。点击它并查看回复信息。谢谢兄弟,你的解决方案可能没有给出我问题的准确答案,但我有机会知道如何检查回复并找到错误。我解决了这个问题。如果你得到500并且你在开发环境中,你可以检查ajax的响应(来自服务器),例如在Chrome中点击F12并重新运行页面。然后进入chrome开发工具上的“网络”选项卡,找到请求文件(红色)。点击它并查看回复信息。谢谢兄弟,你的解决方案可能没有给出我问题的准确答案,但我有机会知道如何检查回复并找到错误。我解决了问题。检查网络响应,看看错误在说什么?这是发布控制器文件的方法吗?检查网络响应,看看错误在说什么?这是发布控制器文件的方法吗?