ASP-Vorlesungsreihe (15) Verwendung von HTML-Formularen
Autor:Eve Cole
Aktualisierungszeit:2009-05-30 19:58:48
Mit dem ASP-Request-Objekt können Sie ein einfaches, aber leistungsstarkes Skript zum Sammeln und Verarbeiten von HTML-Tabellendaten erstellen. In diesem Thema erfahren Sie nicht nur, wie Sie ein einfaches Tabellenverarbeitungsskript erstellen, sondern lernen auch einige nützliche Techniken zum Überprüfen von Tabelleninformationen auf dem Webserver und im Browser des Benutzers kennen.
Über HTML-Tabellen
HTML-Tabellen, die gebräuchlichste Methode zum Sammeln von Webinformationen, sind spezielle Anordnungen von HTML-Tags, die Steuerelemente für die Benutzeroberfläche auf einer Webseite bereitstellen. Textfelder, Schaltflächen und Kontrollkästchen sind typische Steuerelemente, die es Benutzern ermöglichen, mit Webseiten zu interagieren und Informationen an den Webserver zu übermitteln.
Das folgende HTML-Beispiel generiert ein Formular, in das der Benutzer seinen Namen und sein Alter eingeben kann, und enthält eine Schaltfläche, die diese Informationen an den Webserver übermittelt. Das Formular enthält außerdem ein implizites Steuerelement (das vom Webbrowser nicht angezeigt wird), mit dem zusätzliche Informationen an den Webbrowser übergeben werden können.
<FORM METHOD="POST" ACTION="myfile.asp">
<INPUT TYPE="text" NAME="firstname">
<INPUT TYPE="text" NAME="lastname">
<INPUT TYPE="text" NAME="age">
<INPUT TYPE="hidden" NAME="userstatus" VALUE= "new">
<INPUT TYPE="submit" VALUE="Enter">
</FORM>
Formulare, die ASP-Eingaben verarbeiten Wenn das Formular Informationen an den Webserver sendet, fordert der Webbrowser des Benutzers die ASP-Datei an, die mit dem ACTION-Attribut des HTML-Tags <FORM> angegeben wird (im vorherigen Beispiel hieß die Datei Myfile.asp). . .asp-Dateien enthalten Skripts, die Tabellenwerte manipulieren, z. B. das Anzeigen einer Ergebnistabelle oder das Abfragen von Informationen aus einer Datenbank.
Es gibt drei Möglichkeiten, Werte aus HTML-Tabellen mithilfe von ASP-Dateien zu sammeln
Die statische .htm-Datei kann eine Tabelle enthalten, deren Werte an die .asp-Datei gesendet werden.
Eine ASP-Datei kann ein Formular erstellen, das seine Informationen per E-Mail an eine andere ASP-Datei sendet.
Die ASP-Datei kann ein Formular erstellen, das seine Informationen per E-Mail an sich selbst sendet, die Datei, die das Formular enthält.
Die ersten beiden Methoden funktionieren auf die gleiche Weise, und wenn das Formular mit dem Gateway-Programm (außer ASP) interagiert, kann es Befehle zum Lesen und Reagieren auf Benutzerauswahlen enthalten.
Das Erstellen einer ASP-Datei, die eine Tabellendefinition enthält und Informationen an sich selbst sendet, ist eine komplexere, aber leistungsfähigere Möglichkeit, mit Tabellen zu arbeiten. Dieser Vorgang wird im Abschnitt Validieren von Formulareingaben demonstriert.
Holen Sie sich Formulareingaben
Das ASP-Request-Objekt stellt zwei Sammlungen bereit, die das Abrufen von Formularinformationen, die an eine URL-Anfrage angehängt sind, erheblich vereinfachen.
QueryString-Sammlung
Die QueryString-Sammlung ruft den Wert ab, der als Text nach dem Fragezeichen in der angeforderten URL an den Webserver übergeben wird. Tabellenwerte können an die angeforderte URL angehängt werden, indem die HTTP-GET-Methode verwendet oder die Tabellenwerte manuell zur URL hinzugefügt werden.
Wenn das vorherige Tabellenbeispiel beispielsweise die GET-Methode (ACTION = „GET“) verwendet und der Benutzer „Jeff“, „Smith“ und „30“ eingibt, wird die folgende URL-Anfrage an den Server gesendet:
http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new
Myfile.asp enthält das folgende Tabellenverarbeitungsskript:
Hallo, <%= Request.QueryString("firstname") %> <%= Request.QueryString("lastname") %>.
Sie sind <%= Request.QueryString("age") %> Jahre alt.
<%
Wenn Request.QueryString("userstatus") = "new user" dann
Response.Write"Dies ist Ihr erster Besuch auf dieser Website!"
Ende wenn
%>
In diesem Fall gibt der Webserver den folgenden Text an den Webbrowser des Benutzers zurück:
Hallo, Jeff Smith. Sie sind 30 Jahre alt. Dies ist Ihr erster Besuch auf dieser Website!
Die QueryString-Sammlung verfügt über einen optionalen Parameter, der verwendet werden kann, um auf einen von mehreren Werten zuzugreifen, die im Anforderungstext angezeigt werden. Sie können die Count-Eigenschaft auch verwenden, um die Anzahl der Vorkommen eines bestimmten Werttyps zu zählen.
Beispielsweise könnte ein Formular, das ein Listenfeld mit mehreren Elementen enthält, die folgende Anfrage senden:
http://list.asp?food=apples&food=olives&food=bread
Sie können auch den folgenden Befehl verwenden, um mehrere Werte zu zählen:
Request.QueryString("food").Count
Wenn Sie mehrere Werttypen anzeigen möchten, sollte List.asp das folgende Skript enthalten;
<%Total = Request.QueryString("food").Count%>
<%For i = 1 to Total%>
<%= Request.QueryString("food")(i) %> <BR>
<%Next%>
Das obige Skript zeigt Folgendes an:
Äpfel
Oliven
brot
Formularsammlung Bei Verwendung der HTTP-GET-Methode zur Übergabe langer und komplexer Formularwerte an den Webserver können Informationen verloren gehen. Die meisten Webserver neigen dazu, die Länge von URL-Abfragezeichenfolgen streng zu kontrollieren, sodass lange Tabellenwerte, die mit der GET-Methode übergeben werden, abgeschnitten werden. Wenn Sie große Informationsmengen von einem Formular an einen Webserver senden müssen, müssen Sie die HTTP-POST-Methode verwenden. Diese Methode wird zum Senden von Tabellendaten im HTTP-Anforderungstext verwendet. Die Anzahl der gesendeten Zeichen kann unbegrenzt sein. Sie können auch die Form-Sammlung des ASP-Request-Objekts verwenden, um mit der POST-Methode gesendete Werte abzurufen.
Die Form-Sammlung speichert numerische Werte auf die gleiche Weise wie die QueryString-Sammlung. Wenn ein Benutzer beispielsweise eine Tabelle mit einer langen Liste von Namen füllt, können Sie diese Namen mit dem folgenden Skript abrufen:
<% For i = 1 to Request.Form.Count %>
<% =Request.Form("names")(i) %>
<% Weiter %>
Validieren von Formulareingaben Ein gutes Formularverarbeitungsskript sollte vor der Verarbeitung der Daten überprüfen, ob die in das Formular eingegebenen Informationen gültig sind. Validierungsskripte können überprüfen, ob die Art der Informationen, die Benutzer in ein Formular eingeben, korrekt sind. Wenn Ihre Website beispielsweise ein Formular enthält, mit dem Benutzer Finanzinformationen berechnen können, müssen Sie vor der Verarbeitung der Ergebnisse überprüfen, ob der Benutzer tatsächlich numerische Informationen und keinen Text eingegeben hat.
Eine sehr praktische Möglichkeit, Formulareingaben zu validieren, besteht darin, ein Formular zu erstellen, das Informationen an sich selbst weitergibt. In diesem Fall enthält die .asp-Datei eine Tabelle, aus der die Informationen abgerufen werden können. Das folgende Skript überprüft beispielsweise, ob der Benutzer einen Wert in das Tabellenfeld „Alter“ eingegeben hat, indem es Informationen an sich selbst übergibt:
<% If Isnumeric(Request.QueryString("Age")) then %>
<p>Hallo, Ihr Alter beträgt <%=Request.QueryString("age")%>
<%Else%>
<p>Bitte geben Sie ein numerisches Alter ein.
<%End If %>
<FORM METHOD= "POST" ACTION="verify.asp" >
Name: <INPUT TYPE="text" NAME="Name" >
Alter: <INPUT TYPE="text" NAME="Alter" >
<INPUT TYPE="submit" VALUE="Enter">
</FORM>
In diesem Beispiel befindet sich das Skript auch in derselben Verify.asp-Datei, die die Tabelle enthält. Das Formular übergibt Informationen an sich selbst, indem es Verify.asp im ACTION-Attribut angibt.
Sie können auch clientseitige Skripts erstellen, um zu überprüfen, ob Benutzer gültige Informationen eingegeben haben. Durch die Validierung von Benutzereingaben in einem Webbrowser kann der Netzwerkverkehr zum Webserver reduziert und Benutzer bei Formulareingabefehlern schneller benachrichtigt werden. Das folgende Skript wird im Webbrowser des Benutzers ausgeführt und überprüft die Informationen des Benutzers, bevor es sie an den Webserver übermittelt.
<SCRIPT LANGUAGE="VBScript">
<!--
Sub btnEnter_OnClick
DimTheForm
Setzen Sie TheForm = Document.MyForm
If IsNumeric(TheForm.Age.Value) Then
TheForm.submit
Anders
Msgbox „Bitte geben Sie ein numerisches Alter ein.“
Ende wenn
Sub beenden
//-->
</SCRIPT>
<FORM METHOD= "POST" NAME= MyForm ACTION="myfile.asp" >
Name: <INPUT TYPE="text" NAME="Name" >
Alter: <INPUT TYPE="text" NAME="Alter" >
<INPUT TYPE="button" NAME="btnEnter" VALUE="Enter">
</FORM>