Ich habe einen modalen Dialog, in dem ich ein Formular von einem GSP lade und ich bin dabei, die richtige Lösung für ein AJAX-basiertes Formular mit JSON-Validierung zu finden. Erfolgsmeldung wie eine Flash-Scope-Nachricht:
%Vor%In dieser Form habe ich folgendes JS:
%Vor%Ich gebe eine JSON-Antwort zurück, wenn sie erfolgreich ist und wenn ein Fehler auftritt, und ich brauche Ajax, andernfalls verschwindet mein modaler Dialog aufgrund der neuen Anfrage.
Hier sind meine Fragen:
Danke!
Es gibt viele verschiedene Möglichkeiten, dies zu erreichen und wahrscheinlich ein oder mehrere Plugins, um Sie in Schwung zu bringen. Ich werde Ihnen jedoch zeigen, wie ich generell damit umgehe. Ich habe ein Objekt, das so aussieht ...
%Vor%Dies ist das Objekt, das ich als JSON rende. Wenn also Validierungsfehler vorliegen, wird der Erfolg falsch und ich füge alle Fehler zur Fehlerkarte hinzu. Ich mache das in einem Service und diese Methode sieht so aus:
%Vor%Also sieht mein Controller so aus wie
%Vor%In meinem clientseitigen Code mache ich so etwas (mit dem jQuery-Formular-Plugin, aber das würde auch mit einer generischen $ .ajax / $ .post / $ .get-Methode funktionieren ...
%Vor%Und meine showErrors Funktion
%Vor%Ich hoffe, das hilft.
Die akzeptierte Antwort ist gut und ich bin für einen serviceorientierten Ansatz. Mit Ajax-Controllern finde ich manchmal, dass die Anforderungen sehr einfach sind und Fehlerbehandlung und Persistenz direkt in der Steuerung durchgeführt werden können. Ein nettes oneliner, um Ihre netten i18n Fehler zu einer Sammlung hinzuzufügen, ist:
%Vor%Geben Sie JSON dann wie folgt zurück
%Vor%Und Ihr JavaScript (Grails 2 hat einen Dokumentationsfehler, also verwenden Sie 'Daten' und nicht 'e', wenn Sie JQuery als Standard verwenden.
Rufen Sie Ihr Ajax
an %Vor%Und verarbeiten Sie die Antwort
%Vor%