我正在尝试从使用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;
});
答案 0 :(得分:0)
422是一个无法处理的实体,是Laravel的请求验证,告诉您缺少某些内容。
您的ajax请求仅发送CSRF令牌,并且响应告诉您:名称,主题和内容是必填字段。
如果您尚未添加,请在HTML {!! csrf_field() !!}
中将其添加到您的表单中。将动作放在表单中会更有效,这样您就可以静态使用表单,这也意味着您不必将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");
}
});
});