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 更改为POSTGET 只是为了查看是否有任何更改或其他错误,但它仍然是相同的500 internal server 问题。 PS,我的表格有csrf

【问题讨论】:

【参考方案1】:

你的问题肯定是$category,你使用的是$category_update,而不是$category

【讨论】:

我明白了,那是我的错。如果控制台没有指出错误,我会有点迷失,谢谢。

以上是关于Laravel/Ajax POST 500 内部服务器错误可能的原因的主要内容,如果未能解决你的问题,请参考以下文章

内部服务器错误 500 Laravel 5.4 AJAX

Laravel 5.2 ajax 返回 500 内部服务器错误

Laravel ajax 帖子返回 500 内部服务器错误

Laravel ajax 返回 500(内部服务器错误)

将数据保存到数据库时 Laravel Ajax 500 内部服务器错误

如何修复 Laravel 5.8 Ajax 表单提交中的内部服务器错误