2016-10-06 4 views
3

Ich versuche zu validieren und ein Formular von einer Website mit Laravel 5.2 Das Problem kommt, wenn ich versuche, das Formular zu übermitteln, ohne alle erforderlichen Felder ausfüllen. Die StoreRequest prüft, welche Felder erforderlich sind, und gibt mir die Fehler wie folgt aus:Laravel Ajax Formular 422 Unprocessable Entität

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

Hier ist, wie ich das Formular abschicken und wie will ich die Fehler der Validierung angezeigt werden:

$("#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

Und was würde das Problem sein? –

+0

Wenn ich das Formular abschicke, bekomme ich 422 Unprocessable Entity und ich kann die Fehlermeldungen dem Benutzer nicht anzeigen –

+0

Sie senden keine Formulardaten, nur das Token. Und "val" ist ein Array. –

Antwort

0

422 ist Eine nicht verarbeitbare Entität ist Laravels Anfragevalidierung, die Ihnen sagt, dass etwas fehlt.

Ihre AJAX-Anfrage sendet nur das CSRF-Token und die Antwort sagt Ihnen Folgendes: Name, Betreff und Inhalt sind Pflichtfelder.

Fügen Sie dies zu Ihrem Formular in HTML {!! csrf_field() !!} hinzu, wenn Sie das nicht bereits hinzugefügt haben. Es ist viel effektiver, Ihre Aktion wie in der Form zu setzen, so können Sie die Form statisch verwenden und es bedeutet auch, dass Sie Blade nicht in Javascript einfügen müssen.

Formular Beispiel:

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

    <!-- Form stuff --> 

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

JS Beispiel:

$("#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"); 
     } 
    }); 
}); 
Verwandte Themen