【问题标题】:when sent data via Ajax to a Controller in Laravel the data is null当通过 Ajax 将数据发送到 Laravel 中的控制器时,数据为空
【发布时间】: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 对象时,您才会这样做
  • 那没有解决问题,还是一样。

标签: php jquery ajax laravel


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2017-03-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-30
    • 2014-07-31
    相关资源
    最近更新 更多