Suchen mit Go und jQuery

Suchfeld

Die Suche mit zwei Eingabefeldern ist als Form innerhalb des <nav> Elements realisiert und mit Bootstrap Styles für reaktives Verhalten formatiert.

66
Das Template zum Cross Site Request Forgery (csrf) Schutz enthält ein hidden field mit einem kryptografischen Schlüssel, der von dem CSRF Filter ausgewertet wird.
70 – 73
Die Button Action wird beim Laden in den Browser per JavaScript gesetzt (s.u.)
75 – 77
Das Select Element wird nach Ausführung einer Suche mit den Ergebnissen nachgeladen.

Find Button Action

JavaScript im Browser

Die Aktion bei einem Click auf den Find Button wird (neben weiteren Initialisierungen) in der Initialisierungsfunktion  $(document).ready(function(){ ... }  in der JavaScript Datei work.js bestimmt.

33
defaultFind() wird an das Click-Ereignis des #find Buttons gebunden.
47, 48
Die Service-URL für die aktuell aktive Tab-Seite wird bestimmt. Details dazu sind im Zusammenhang mit den Tab-Seiten beschrieben.
49-51
Die $.load() Funktion von jQuery wird aufgerufen: „Load data from the server and place the returned HTML into the matched element.“ Als zweiter Parameter wird eine Map übergeben, die serverseitig als Request Parameter gelesen werden kann. Die Go Handler Funktion unter der angegebenen URL liefert ein HTML Fragment, das in das Element mit der id „#qapps“ eingefügt wird. Das sollte also ein <select> Element mit allen <option> Elementen sein, die den Suchergebnissen entsprechen.
49
Nach Laden des HTML Fragments wird die function showSelect() aufgerufen. Diese wird zusammen mit den Tab Seiten beschrieben.
Go Handler Funktion

Eine typische Handler Funktion für die Suche ist FindApplicants( ... ) . Andere Suchfunktionen sind aktuell im Beispiel nicht implementiert. Wir betrachten hier nur die für die Suche relevanten Zeilen.

33
Vor jeder Auswertung der Request Parameter wird ParseForm aufgerufen, um die Request Parameter als PostFormValues bereitzustellen.
34, 35
Die Werte für die Suche werden aus dem Request als PostFormValue gelesen. Der Aufruf von EscapeString mit den gelesenen Werte ist eine extrem wichtige Sicherheitsmaßnahme, die verhindert, dass ausführbarer Code über ein Eingabefeld in den Server geschmuggelt und dort ausgeführt wird.
40
findApplicants( … ) liefert eine Liste von Applicant Objekten, die mit den Suchparametern gefunden wurden. Implizit wird immer das SQL Wildcard Symbol % an die Suchstrings angehängt, so dass er reicht, den Namensanfang einzugeben.
41
Die Funktion applicantResultList( … ) bereitet die gefundene Liste für die Verwendung im Go Template „qresult“ auf. Für die Ergebnisliste werden nur Vorname, Nachname und ID gebraucht.

Die eigentliche Suche wird in der Funktion findApplicants() in work.go durchgeführt.

73, 76
Bewerber unterscheiden sich von immatrikulierten Studenten durch das enrolled_at Datum.
84-92, 95-102
Queries werden mit den Gorm Funktionen schrittweise aufgebaut und mit Find() ausgeführt.
95
Nach exmatrikulierten (d.h. gelöschten) Studenten muss mit Unscoped() gesucht werden, da sie in der Datenbank als gelöscht markiert sind.
Template zur Anzeige

Mit dem kleinen Template „qresult“ lässt sich sehr einfach aus der Ergebnis-Liste der HTML-Code für die Anzeige erzeugen.

87
<select> Element mit vorbesetzter Event Handler Funktion, die auf das change Event reagiert. Dies wird ausgelöst, wenn eine andere Option ausgewählt wird, per Maus, Tastatur, … .
89
Nachname, Vorname wird angezeigt, die ID kann per JavaScript abgefragt werden oder wird mit den Formulardaten zum Server geschickt.
91
Suche lieferte keine Ergebnisse.

Das Ergebnis wird in den Browser geladen.

Ergebnis der Suche im Browser
Ergebnis der Suche im Browser

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.