2016-10-06 30 views
3

我试图验证并从Laravel 5.2 犯了一个网站的问题来了,当我尝试提交表单没有填写所有必填字段提交表单。Laravel Ajax表单422无法处理的实体

{"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无法处理的实体,我不能显示错误消息 –

+0

你不发送任何形式的数据的用户,只需令牌。 'val'是一个数组。 –

回答

0

422是哪些字段是必需的,并返回我这样的错误StoreRequest检查一个不可处理的实体是Laravel的请求验证,告诉你缺少某些东西。

您的ajax请求仅发送CSRF令牌,并且响应告诉您:name,subject和content是必填字段。

如果您尚未添加该功能,请将其添加到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"); 
     } 
    }); 
}); 
相关问题