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 内部服务器错误可能的原因的主要内容,如果未能解决你的问题,请参考以下文章