【发布时间】: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对象时,您才会这样做 -
那没有解决问题,还是一样。