[英]Laravel ajax form 422 Unprocessable Entity
我正在嘗試驗證並提交一個使用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是一個不可處理的實體,是Laravel的請求驗證,告訴你缺少某些東西。
您的ajax請求僅發送CSRF令牌,響應告訴您:名稱,主題和內容是必填字段。
將它添加到HTML中的表單{!! csrf_field() !!}
{!! 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");
}
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.