Laravel Controller/Ajax 没有保存在我的数据库中

Laravel Controller/Ajax not saving in my database

我的 save(); 在我的类别中似乎没有按照下面的预期运行。我会先展示必要的代码:

我的 table 名字是 hms_bbr_category 这也是本地连接到我的 .env 的:

DB_CONNECTION=pgsql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=jhs
DB_USERNAME=postgres
DB_PASSWORD=pa55wor0

我的模型:HmsBbrCategory

class HmsBbrCategory 扩展模型

{
    protected $table = 'hms_bbr_category';
    protected $fillable = [
        "category_name", "category_description"
    ];
}

我的控制器:BBRCategoryConfigurationController

class BBRCategoryConfigurationController extends Controller
{
    public function index(){
        return view('frontend.bbr-settings.bbr-category-configuration');
    }

    public function store(Request $request)
    {
        $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 = new HmsBbrCategory;
            $category->category_name = $request->input('category_name');
            $category->category_description = $request->input('category_description');
            $category->save();
            return response()->json([
                'status'=>200,
                'message'=>'Category Added!',
               
            ]);
        }
        
    }

ajax 和模态字段

<div class="form-group">
<input type="text" class="form-control form-group w-100 category_name" placeholder="Category Name">
</div> 
<div class="form-group">
<textarea class="form-control w-100 category_description" placeholder="Category Description" cols="50" rows="10"></textarea>
</div>

<script>
    $(document).ready(function (){
        $(document).on('click', '.add_category', function(e){
            e.preventDefault();
            var category_data = {
                'category_name': $('.category_name').val(),
                'category_description': $('.category_description').val(),
            }
            
            //token taken from laravel documentation
            $.ajaxSetup({
                headers: {
                    'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                }
            });
            console.log(category_data);
            $.ajax({
                type: "POST",
                url: "/clinical/bbr-category-configuration",
                data: "category_data",
                dataType: "json",
                success: function (response){
                    // console.log(response);
                if(response.status == 400)
                    {
                    $('#saveform_errList').html("");
                    $('#saveform_errList').addClass('alert alert-danger');
                    $.each(response.errors, function (key, err_values) {
                        $('#saveform_errList').append('<li>'+err_values+'</li>');
                    });
                    }
                else 
                    {
                     $('#saveform_errList').html("");
                     $('#success_message').addClass('alert alert-success');
                     $('#success_message').text(response.message);
                     $.('#createCategory').modal('hide');
                     $.('#createCategory').find('input').val("");
                     console.log(category_data);
                    }
                }
            });
        });
    });
</script>

我在 web.php

的路线
Route::get('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'index']);
Route::post('/bbr-category-configuration', [BBRCategoryConfigurationController::class,'store']);

注意事项:

我的直觉是我的商店功能在 $category = new HmsBbrCategory; 处没有正确连接但是我已经检查过我的 table 名称和所采用的字段是相同的,如 $category->category_name = $request->input('category_name'); 处所示

我还通过简单地添加 console.log(response) 在 ajax 中测试了值,如屏幕截图所示,我无法通过我的验证器到达 save()。我不确定怎么做,但应该不会出错,因为我的文本字段已填满。

如果需要,我可以详细说明,我想知道我可以更改什么来修复我的 validation/save。感谢您的帮助。

如错误所示,验证失败(我猜是空值)并返回您编写的代码 (400)。

我猜这是因为您在属性 data: "category_data",

中使用的是字符串而不是变量

更新代码以改为发送变量

 $.ajax({
                type: "POST",
                url: "/clinical/bbr-category-configuration",
                data: category_data, //change here
                dataType: "json",
                success: function (response){
//...