2016-05-23 16 views
0

Laravel 5.2 docs Zustand:Laravel 5: AJAX Anfragen und Validierung

AJAX Requests & Validation

In diesem Beispiel haben wir eine traditionelle Formulardaten an den Anwendung zu senden. Viele Anwendungen verwenden jedoch AJAX-Anforderungen. Wenn die Validierungsmethode während einer AJAX-Anforderung verwendet wird, generiert Laravel keine Weiterleitungsantwort . Stattdessen generiert Laravel eine JSON-Antwort , die alle Validierungsfehler enthält. Diese JSON-Antwort wird mit einem HTTP-Statuscode 422 gesendet.

Src: https://laravel.com/docs/5.2/validation#quick-ajax-requests-and-validation

Dies ist jedoch nicht richtig zu sein scheint. Ein einfache ROTATION Anruf zu einer Route Validierung verwendet, gibt noch HTML/eine Umleitung:

curl -X POST -H "Content-Type: application/json" 
-H "Cache-Control: no-cache" 
-d '{}' "http://yours.com/user/register" 

Die Antwort der oben ist HTML, und eine Umleitung. Es ist nicht JSON.

Auch diese Seite: https://laravel.com/docs/5.2/requests#retrieving-input Staaten:

Abrufen von JSON Eingabewerte

Wenn JSON-Anfragen auf Ihre Bewerbung zu senden, können Sie die JSON-Daten über die Eingabemethode zugreifen, solange die Content- Type Header von die Anfrage ist richtig auf Anwendung/Json gesetzt.

Also was haben wir verpasst? Was ist die Lösung?

Antwort

1

Sie scheinen auch die folgenden Header zu müssen:

"X-Requested-With: XMLHttpRequest" 

So:

curl -X POST -H "Content-Type: application/json" 
-H "X-Requested-With: XMLHttpRequest" 
-H "Cache-Control: no-cache" 
-d '{}' "http://yours.com/user/register" 

Und jetzt ist $this->validate(...) richtig ein JSON-Antwort zurück.