Progressive Enhancement macht native Submit zu AJAX

Wenn JavaScript verfügbar ist, erfolgt der Request mit Ajax, ansonsten als native Submit

Diese Anwendung ist eine DEMO. Wenn ist, erfolgt der Request mit Ajax, ansonsten als ein normaler Submit.

Zu Prüfen ist ein eingegebenes Datum

Hier ist das Ergebnis: Bitte Datum eingeben und auf Prüfen klicken!

Erläuterungen

Werfen Sie einen Blick auf die Sources! Was Sie sehen ist eine sogenannte Kompaktklasse, Perlcode und HTML Template in einer einzigen Datei und doch sauber voneinander getrennt. Das native HTML-Template erkennen Sie an der Schreibweise der Platzhalter wie %result%. Im Template für JavaScript hingegen sehen die Platzhalter so aus: @result@

Wenn JavaScript verfügbar ist, wird das Submit-Event abgefangen und anstelle dessen erfolgt das Senden der Eingaben mit AJAX. Damit bei gleichen Request-Parametern serverseitig ein native Submit von Ajax unterschieden werden kann, sendet AJAX einen Custom-Header. Im Controller bzw. in der Parameter-Kontrollstruktur wird also festgestellt, ob ein solcher Request-Header vorliegt. Ist das der Falll, wird der STASH, eine Hash-Referenz welche die Reponsedaten puffert, serialisiert was die Methode encode_stash() erledigt. Das Gegenstück zu dieser Methode findet sich in request.js::decode_stash() womit sämtliche Daten aus dem STASH im Browser wiederhergestellt und in das DOM gerendert werden.

Anders jedoch bei einem native Submit, da wird der STASH serverseitig in das HTML-Template gerendert und eine komplette HTML-Datei als Response ausgeliefert. Insgesamt ergeben sich auf diese Art und Weise fürs Framework einheitliche Prozesse. Die Methode encode_stash() verwendet per Default einen eigenen Serializer, kann jedoch auch aus dem STASH einen JSON-String erzeugen und ist darüber hinaus auch offen für weitere Serialize-Algorithmen.

Dasselbe gilt natürlich auch für die JavaScript-Funktion decode_stash(response,'json') für den umgekehrten Vorgang.


Die rein persönlichen Zwecken dienende Seite verwendet funktionsbedingt einen Session-Cookie. Datenschutzerklärung: Auf den für diese Domäne installierten Seiten werden grundsätzlich keine personenbezogenen Daten erhoben. Das Loggen der Zugriffe mit Ihrer Remote Adresse erfolgt beim Provider soweit das technisch erforderlich ist. @: nmq​rstx-18­@yahoo.de