当使用Ajax表单提交数据时,可能会遇到422错误。这是因为Laravel会验证提交的数据,如果验证失败,则会返回422错误给Ajax请求。
要解决这个问题,可以按照以下步骤进行修改。
@csrf
指令。FormData
对象来序列化表单数据,并在请求头中添加Content-Type
字段。以下是一个示例代码:
@csrf
指令。
FormData
对象来序列化表单数据,并在请求头中添加Content-Type
字段。var formData = new FormData($('form')[0]);
$.ajax({
url: '/submit-form',
type: 'POST',
data: formData,
contentType: false,
processData: false,
success: function(response) {
...
},
error: function(xhr, status, error) {
...
}
});
public function submitForm(Request $request) {
$validator = Validator::make($request->all(), [
'name' => 'required',
'email' => 'required|email',
'message' => 'required',
]);
if ($validator->fails()) {
return response()->json(['errors' => $validator->errors()], 422);
}
// 处理表单提交逻辑
}
这样就可以处理表单提交时返回422错误的问题了。
上一篇:Ajax表单提交后页面不停留。
下一篇:Ajax表单提交事件附加两次