URLs und Form Actions

4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next

Version 2003 (Geändert)


Der 4D Web Server bietet verschiedene "Form actions" in URL und HTML, um bestimmte Aktionen in Ihrer Datenbank zu integrieren, sowohl im kontextuellen als im nicht kontextuellen Modus.

Es gibt folgende URLs:

4DMETHOD/, um ein beliebiges HTML Objekt mit einer Projektmethode Ihrer Datenbank im kontextuellen Modus zu verbinden.

4DACTION/, um ein beliebiges HTML Objekt mit einer Projektmethode Ihrer Datenbank im nicht kontextuellen Modus zu verbinden.

4DCGI/, um die Datenbankmethode On Web Connection von einem beliebigen HTML Objekt aus aufzurufen.

Hinweis: Zusätzlich akzeptiert 4D Web Server die speziellen URLs: /4DSTATS, /4DHTMLSTATS, /4DCACHECLEAR und /4DWEBTEST. Damit erhalten Sie Informationen über die Funktionsweise Ihrer 4D Web Site. Weitere Informationen dazu finden Sie im Abschnitt Information über die Web Site.

URL 4DACTION/


Syntax: 4DACTION/MyMethod/Param

Modus: Nicht kontextuell. Bei Aufrufen im kontextuellen Modus wird in den nicht kontextuellen Modus umgeschaltet.

Verwendung: URL oder "Form action".

Über diese URL können Sie ein HTML Objekt (Text, Schaltfläche...) mit einer 4D Methode verbinden. Der Link lautet /4DMETHOD/Method_Name{/Param}. Method_Name ist der Name der auszuführenden 4D Projektmethode, wenn auf ein Link geklickt wird, Param ein optionaler Textparameter, der der Methode in $1 übergeben wird (siehe nachfolgenden Abschnitt "Textparameter für über URLs aufgerufene 4D Methoden").

Empfängt 4D die Anfrage /4DACTION/MyMethod/Param, wird –sofern vorhanden– die Datenbankmethode On Web Authentication aufgerufen. Gibt diese Wahr zurück, wird die Methode MyMethod mit dem optionalen String /Param als Parameter in $1 ausgeführt. Siehe dazu nachfolgenden Absatz "Textparameter für über URLs aufgerufene 4D Methoden".

4DACTION/ kann einer URL in einer statischen Web Seite zugewiesen werden. Die Syntax der URL muss lauten: <A HREF="/4DACTION/MyMeth/Param">Etwas ausführen</A>

Die Projektmethode MyMethod sollte in der Regel eine "Response" zurückgeben, z.B über SEND HTML FILE oder SENT HTML BLOB, etc. eine HTML Seite senden. Achten Sie auf eine möglichst kurze Ausführung, um den Browser nicht zu blockieren.

Hinweis: Eine über 4DACTION aufgerufene Methode darf keine Oberflächenelemente aufrufen (DIALOG, ALERT...).

Achtung: Eine 4D Methode kann mit der URL 4DACTION nur ausgeführt werden, wenn das Attribut "Zugang per 4DACTION" zugewiesen ist. Diese Option ist im Dialogfenster Methodeneigenschaften enthalten und standardmässig inaktiv. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.

Für die Eingabe numerischer Daten konvertiert 4D den Wert des Feldes von Alpha–>Zahl.

Beispiel

In einer im nicht-kontextuellen Modus gestarteten 4D Web Datenbank soll der Browser Datensätze über eine statische HTML Seite suchen können. Diese Seite lautet "Suche.htm". Die Datenbank enthält weitere statische Seiten, über welche Sie z.B. das Suchergebnis anzeigen können ("Ergebnis.htm"). Der Typ POST wurde sowohl der Seite als auch der Aktion /4DACTION/SUCHE zugewiesen.

Hier die Seite, wie sie in einem HTML Editor erscheint, in unserem Fall Dreamweaver:

Hier der HTML Code für diese Seite:

<form name="form1" id="form1" method="post" action="/4DACTION/SUCHE">

<p><font size="5"><strong>Willkommen bei unserem Web-Server</strong></font></p>

<p>Bitte geben Sie Ihren Namen ein unter dem Sie sich einloggen wollen:</p>

<p><strong><font size="3">Name</font></strong>:

<input name="VNAME" type="text" id="VNAME" />

<input type="submit" name="Submit" value="Zur&uuml;cksetzen" />

<input type="submit" name="Submit2" value="Abschicken" />

</p>

</form>

Tippen Sie zur Dateneingabe im Dateneingabebereich "ABCD" ein, prüfen Sie die Option und bestätigen Sie, indem Sie auf die Schaltfläche Abschicken klicken.

4D ruft dann die Projektmethode COMPILER_WEB auf:

   C_TEXT(VNAME)
   VNAME:=""
   C_LONGINT(vEXACT)
   vEXACT:=0
   OK:=0   `Sonderfall

Im Beispiel enthält vNAME den String "ABCD", vEXACT ist gleich 1 und OK ist gleich 1 (da der Name der Schaltfläche OK ist).

4D ruft die Datenbankmethode On Web Authentication auf –sofern vorhanden–, dann wird die Projektmethode SUCHE aufgerufen. Sie lautet:

   If (OK=1)
      If (vEXACT=0) `Wurde die Option nicht ausgewählt
         vNAME:=VNAME+"@"
      End if
      QUERY([Jockeys];[Jockeys]Name=vNAME)
      vLIST:=Char(1) `Gibt die Liste in HTML zurück
      FIRST RECORD([Jockeys])
      While (Not(End selection([Jockeys])))
         vLIST:=vLIST+[Jockeys]Name+" "+[Jockeys]Tel+"<BR>"
         NEXT RECORD([Jockeys])
      End while
      SEND HTML FILE("Ergebnis.htm") `Sendet die Liste zum Formular Ergebnis.htm
         `welche eine Referenz auf die Variable vLIST enthält (das ist <!--4DVAR vLIST––>)
   ...
   End if

URL 4DMETHOD/


Syntax: 4DMETHOD/MyMethod/Param

Modus: Kontextuell. Bei Aufrufen im nicht kontextuellen Modus wird in den kontextuellen Modus umgeschaltet.

Verwendung: URL oder "Form action".

Über diese URL können Sie ein HTML Objekt (Text, Schaltfläche...) mit einer 4D Methode verbinden. Der Link lautet /4DMETHOD/Method_Name{/Param}. Method_Name ist der Name der auszuführenden 4D Projektmethode, wenn auf ein Link geklickt wird, Param ein optionaler Textparameter, der der Methode in $1 übergeben wird (siehe nachfolgenden Abschnitt "Textparameter für über URLs aufgerufene 4D Methoden"). Der verbundene Parameter durchläuft die Ausführung der 4D Projektmethode über deren URLs. Die Projektmethode kann selbst 4D Formulare, andere HTML Seiten, etc. anzeigen.

Empfängt 4D die Anfrage /4DACTION/MyMethod/Param, wird –sofern vorhanden– die Datenbankmethode On Web Authentication aufgerufen. Gibt diese Wahr zurück, wird die Methode MyMethod mit dem optionalen String /Param als Parameter in $1 ausgeführt.

Achtung: Eine 4D Methode kann mit der URL 4DACTION nur ausgeführt werden, wenn das Attribut "Zugang per 4DACTION" zugewiesen ist. Diese Option ist im Dialogfenster Methodeneigenschaften enthalten und standardmässig inaktiv. Weitere Informationen dazu finden Sie im Abschnitt Sicherheit der Verbindung.

URL 4DCGI/<action>


Syntax: 4DCGI/<action>

Modus: Beide

Verwendung: URL

Empfängt der 4D Web Server die URL /4DCGI/<action>, ruft dieser die Datenbankmethode On Web Connection auf durch Senden der URL an $1, und zwar unverändert.

Die URL 4DCGI/ entspricht keiner Datei. Ihre Aufgabe ist, 4D aufzurufen. Der Parameter "<action>" kann Information jeglicher Art enthalten.

Mit dieser URL können Sie eine beliebige Aktion durchführen. Sie müssen lediglich den Wert von $1 in der Datenbankmethode On Web Connection oder in einer ihrer Untermethoden prüfen und 4D die entsprechende Aktion ausführen lassen. Sie können z.B. eigene statische HTML Seiten einrichten, um Datensätze hinzuzufügen, zu suchen oder zu sortieren bzw. GIF Bilder on-the-fly erstellen. Anwendungsbeispiele zu URL finden Sie unter den Befehlen PICTURE TO GIF und SEND HTTP REDIRECT.

Am Ende einer Aktion muss über Befehle, die Daten senden, eine Antwort zurückgegeben werden (SEND HTML FILE, SEND HTML BLOB, etc.).

Hinweis: Achten Sie darauf, dass die kürzest mögliche Aktion ausgeführt wird, um den Browser nicht unnötig warten zu lassen.

Textparameter für über URLs aufgerufene 4D Methoden


4th Dimension sendet zu jeder 4D Methode, die über URLs aufgerufen wird, einen Textparameter. Dabei gilt folgendes:

Auch wenn Sie diesen Parameter nicht verwenden, müssen Sie ihn explizit angeben, und zwar mit der Zeile C_TEXT($1). Denn sonst treten Runtime Fehler auf, wenn Sie über das Web auf eine kompilierte Datenbank zugreifen.

Der Parameter $1 gibt die Extradaten am Ende der URL zurück. Sie können ihn als Platzhalter zum Übergeben von Werten aus der HTML Umgebung in die 4D Umgebung einsetzen.

Runtime Fehler im kompilierten Modus

Nehmen wir folgendes Beispiel: Sie führen eine Methode aus, die per Link an ein HTML Objekt gebunden ist. Ihr Bildschirm im Web Browser sieht folgendermassen aus:

Dieser Runtime Fehler tritt auf, da der Textparameter $1 nicht in der 4D Methode angegeben ist, die beim Anklicken des dazugehörigen HTML Links aufgerufen wird. Da der Kontext für die Ausführung die aktuelle HTML Seite ist, bezieht sich der Fehler auf die "Zeile 0" der Methode, die gerade die Seite an den Web Browser gesendet hat.

Im Beispiel aus dem Abschnitt Web Dienste, Einstieg beheben Sie das Problem durch explizites Angeben des Textparameters $1 innerhalb der Methoden M_ADD_RECORDS und M_LIST_RECORDS:

      ` Projektmethode M_ADD_RECORDS 
   C_TEXT($1) ` Dieser Parameter MUSS explizit angegeben werden
   Repeat
      ADD RECORD([Customers])
   Until(OK=0)

      ` Projektmethode M_LIST_RECORDS
   C_TEXT($1) ` Dieser Parameter MUSS explizit angegeben werden
   ALL RECORDS([Customers])
   MODIFY SELECTION([Customers])

Nach diesen Änderungen treten kompilierte Runtime Fehler nicht mehr auf.

Explizit anzugebende Parameter in der aufgerufenen 4D Methode

Je nach Art und Ursprung des Aufrufs einer Methode müssen Sie bestimmte Parameter angeben.

Datenbankmethode On Web Authentication und Datenbankmethode On Web Connection.

Sie müssen die sechs Parameter der Verbindung angeben:

      ` Datenbankmethode On Web Connection 
   C_TEXT($1;$2;$3;$4;$5;$6)

Über die URL 4DMETHOD/ aufgerufene Methode

Sie müssen den Parameter $1 angeben:

      ` Über URL 4DMETHOD/ aufgerufene Methode
   C_TEXT($1)

Über 4DACTION/ als URL aufgerufene Methode

Sie müssen den Parameter $1 angeben:

      ` Über URL 4DACTION/ aufgerufene Methode
   C_TEXT($1) 

Über 4DSCRIPT/ als HTML Kommentar in einem Dokument aufgerufene Methode

Die Methode sollte in $0 einen Wert zurückgeben. Sie müssen den Parameter $0 und $1 angeben:

      ` Über 4DSCRIPT/ als HTML Kommentar aufgerufene Methode
   C_TEXT($0; $1)

Referenz

, GET WEB FORM VARIABLES, Web Server, Einstieg.


4D - Documentation   Français   English   German   4D Programmiersprache, Befehle nach Themen   4D Programmiersprache, Befehle alphabetisch   4D Programmiersprache, Konstanten nach Themen   Back   Previous   Next