当通过 Ajax 将数据发送到 Laravel 中的控制器时,数据为空

Posted

技术标签:

【中文标题】当通过 Ajax 将数据发送到 Laravel 中的控制器时,数据为空【英文标题】:when sent data via Ajax to a Controller in Laravel the data is null 【发布时间】:2021-12-31 11:56:02 【问题描述】:

我使用 Ajax 向控制器发送数据,不幸的是,当我检索数据时它是空的,没有发送任何内容。尽管在发送之前通过 JQuery 获取数据时它确实给了我数据。

下面是Ajax的代码-------

 $.ajax(
    url: $('form#add-user-form').attr('action'),
    method: $('form#add-user-form').attr('method'),
    data: form.serializeArray(),
    processData: false,
    dataType: 'json',
    contentType: false,
    beforeSend:function()
            $(form).find('span.error-text').text('');
            alert('working' + "   " + user['fname']);
    ,
    success:function(data)
        
        if (data.code == 0 )
            $.each (data.error, function(prefix, value)
                alert(prefix + '   ' + value[0]);
                $(form).find('span.'+prefix+'_error').text(value[0]);
            );
            alert('complete');
        else 
            
            $(form)[0].reset();
            alert(data.msg)
        

    

 );

-----------------Laravel Controller 接收数据的方法----------------

  public function store(Request $request)

 
       $validator = \Validator::make($request -> all(), ['fname' => 'required|min:5|max:25', 
                    'lname' => 'required|min:5|max:25',
                    'email' => 'required|email|unique:users', 
                    'pass' => 'required|min:8|max:20|', 
                    'confirm-pass' => 'required|min:8|max:20'
                    ]);

if (!$validator -> passes() )
    return response()->json(['code'=> 0, 'error'=> $validator->errors()->toArray(), $request->fname]);
else 
        $user = new users();
        $user -> name = $request -> fname ;
        $user -> email = $request -> email ;
        $user -> password = $request -> pass;
        $query = $user -> save();
        if ( !$query )
            return response() -> json(['code'=> 0, 'msg' => 'something went wrong']);
        else 
            return response() -> json(['code' => 1, 'msg' => 'users has been successfully added']);
        



【问题讨论】:

应该是:$(form).serializeArray() ? 你为什么使用processData: false,contentType: false,?只有在发送多部分 FormData 对象时,您才会这样做 那没有解决问题,还是一样。 【参考方案1】:

我找到了答案,我没有使用 $.ajax 方法,而是将其替换为 JQuery 的 $.post 函数,一切正常。

【讨论】:

以上是关于当通过 Ajax 将数据发送到 Laravel 中的控制器时,数据为空的主要内容,如果未能解决你的问题,请参考以下文章

在laravel中使用ajax将多个数组发送到控制器

将 Ajax 数据发送到 Laravel 控制器

Laravel:通过无表单的 AJAX 向控制器发送数据

通过 Ajax 调用将数组发送到控制器,然后控制器在 Laravel 中返​​回具有该数组的另一个视图

如何使用ajax将数据从视图发送到控制器laravel?

如何在 Laravel 中使用 Ajax 调用将数据发布到数据库?