Laravel/Ajax POST 500 内部服务器错误可能的原因
Posted
技术标签:
【中文标题】Laravel/Ajax POST 500 内部服务器错误可能的原因【英文标题】:Larave/Ajax PUT 500 internal server error possible reasons 【发布时间】:2021-09-06 13:28:59 【问题描述】:每当我尝试使用我的 ajax 代码更新表单时,我的控制台都会显示此错误:
PUT http://127.0.0.1:8000/clinical/bbr-category-configuration-update/1 500 (Internal Server Error)
路线:
Route::put('/bbr-category-configuration-update/category_id', [BBRCategoryConfigurationController::class,'update']);
阿贾克斯:
$(document).on('click', '.update_category', function (e)
e.preventDefault();
var cat_id = $('#edit_cat_id').val();
var update_data =
'category_name' : $('#edit_category_name').val(),
'category_description' : $('#edit_category_description').val(),
//token taken from laravel documentation
$.ajaxSetup(
headers:
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
);
$.ajax(
type: "PUT",
url: "/clinical/bbr-category-configuration-update/"+cat_id,
data: update_data,
dataType: "json",
success: function (response)
// console.log(response);
if(response.status == 400)
$('#category_formCheckUpdate').html("");
$('#category_formCheckUpdate').addClass('alert alert-danger');
$.each(response.errors, function (key, err_values)
$('#category_formCheckUpdate').append('<li>'+err_values+'</li>');
);
else if(response.status == 404)
$('#category_formCheckUpdate').html("");
$('#category_notif').addClass('alert alert-success');
$('#category_notif').text(response.message);
else
$('#category_formCheckUpdate').html("");
$('#category_notif').html("");
$('#category_notif').addClass('alert alert-success');
$('#category_notif').text(response.message);
$('#editCategoryModal').modal('hide');
fetchcategory();
);
);
控制器:
public function update(Request $request, $category_id)
$validator = Validator::make($request->all(), [
'category_name'=>'required|max:191',
'category_description'=>'required|max:191',
]);
if($validator->fails())
return response()->json([
'status'=>400,
'errors'=>$validator->messages(),
]);
else
$category_update = HmsBbrCategory::find($category_id);
if ($category_update)
$category->category_name = $request->input('category_name');
$category->category_description = $request->input('category_description');
$category->update();
return response()->json([
'status'=>200,
'message'=>'Category Edited!',
]);
else
return response()->json([
'status'=>404,
'message'=>'Category Not Found',
]);
注意事项:
如您所见,我的category_id
正在被正确读取:url: "/clinical/bbr-category-configuration-update/"+cat_id,
。此外,我继续执行console.log
以在我的控制台中显示正在检索整个表。我的主要问题是这个 500 内部服务器错误。不确定是不是PUT
。
我还尝试将PUT
更改为POST
或GET
只是为了查看是否有任何更改或其他错误,但它仍然是相同的500 internal server
问题。 PS,我的表格有csrf
。
【问题讨论】:
【参考方案1】:你的问题肯定是$category
,你使用的是$category_update
,而不是$category
【讨论】:
我明白了,那是我的错。如果控制台没有指出错误,我会有点迷失,谢谢。以上是关于Laravel/Ajax POST 500 内部服务器错误可能的原因的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.2 ajax 返回 500 内部服务器错误