gpt4 book ai didi

php - Laravel ajax 表单 422 无法处理的实体

转载 作者:搜寻专家 更新时间:2023-10-31 21:52:05 25 4
gpt4 key购买 nike

我正在尝试验证并提交来自使用 Laravel 5.2 制作的网站的表单问题来了,当我尝试提交表单而不填写所有必填字段时。 StoreRequest 检查哪些字段是必需的并返回如下错误:

{"name":["The name field is required."],"email":["The email field is required."],"subject":["The subject field is required."],"content":["The content field is required."]}

这是我提交表单的方式以及我想如何显示验证错误:

$("#contact_form").submit(function() {
$.post("{{ url('contact/store/')}}", {"_token": "{{ csrf_token() }}" },
function(data) {
if(data) {
var items = [];
$.each( data, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
});

$( "<ul/>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo("#errors");
}
});
return false;
});

最佳答案

422 is an unprocessable entity 是 Laravel 的请求验证告诉你缺少某些东西。

您的 ajax 请求仅发送 CSRF token ,响应告诉您:名称、主题和内容是必填字段。

将此添加到您的 HTML 表单 {!! csrf_field() !!} 如果您还没有添加它。把你的 Action 放在表单中会更有效,这样你就可以静态地使用表单,这也意味着你不必将 Blade 放在 javascript 中。

表单示例:

<form id="contact_form" action="{{ url('contact/store') }}" method="post">

<!-- Form stuff -->

{!! csrf_field() !!}
</form>

JS 示例:

$("#contact_form").submit(function() {
$.post(
$(this).attr('action'),
$(this).serializeArray(),
function(data) {
if(data) {
var items = [];
$.each( data, function( key, val ) {
items.push( "<li id='" + key + "'>" + val + "</li>" );
});

$( "<ul/>", {
"class": "my-new-list",
html: items.join( "" )
}).appendTo("#errors");
}
});
});

关于php - Laravel ajax 表单 422 无法处理的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39900140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com