当通过 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 中的控制器时,数据为空的主要内容,如果未能解决你的问题,请参考以下文章