当我尝试使用Laravel中的ajax进行发布时,我收到419错误。

5 浏览
0 Comments

当我尝试使用Laravel中的ajax进行发布时,我收到419错误。

我创建了一个表单,尝试在提交时将数据发送到数据库而不进行任何重定向,这是我目前的代码:\nJquery:\n

jQuery(function() {
$("#save").on("submit",function(event){
    var formData = {
        name: $("#name").val(),
        size: $("#email").val()
    };
    if($("#id").length != 0)
        formData['id'] = $("#id").val();
    $.ajax({
        type:"POST",
        headers: {'X-CSRF-TOKEN': $('input[name="_token"]').val()},
        url: "/drawingSave",
        data: formData,
        dataType:"json",
        encode:true,
    }).done(function(data){
        console.log(data.data['name']); //打印名称以检查是否成功
    });
    event.preventDefault();
});
$("[data-toggle='popover']").popover();
});

\n这是表单:\n

@csrf @isset($data['id']) @endisset

\n这是路由:\n

Route::post('drawingSave',[DrawingController::class,'save']);

\n这是控制器中的函数:\n

    public function save(Request $request){
     $data = $request->all();
    // 检查绘图是否存在
    if(is_null($request->id))
    {
        $data['users_id'] = Auth::id();
        $check = $this->create($data); //如果不存在,则创建新的绘图模型
    }
    else
    {
        $check = Drawing::where('id','=',$data['id'])->update([
            'name' => $data['name'],
            'canvas_size' => $data['size'] 
        ]); //更新当前绘图
    }
    return response()->json([
        'data' => $data
    ]);;
}

\n我收到419错误\n编辑:我在$.ajax中添加了一行(headers: {\'X-CSRF-TOKEN\': $(\'input[name=\"_token\"]\').val()}),但现在我得到了500错误\n编辑2:我在代码中发现了一个拼写错误,现在一切正常,谢谢。

0
0 Comments

当尝试在Laravel中使用ajax进行发布时,出现错误419。这个错误的原因是没有传递csrf令牌。解决方法是在ajax的header中设置csrf令牌的值。在DOM中,会被渲染成。添加这个设置后,419错误得到解决,但出现了500错误。要解决500错误,可以检查laravel.log文件。最终发现是一个拼写错误导致的,纠正后问题解决。

0