Schauen wir uns zunächst einen Blick auf den Prozess der ASP -Seitenausführung an
1. IIS findet eine ASP -Datei und sendet sie an die ASP Engine (normalerweise ASP.Dll) -Verberät.
2. Die Engine öffnet diese ASP -Datei und findet den Inhalt zwischen <%und%>. Nur der Inhalt im Skriptblock wird von der Engine analysiert, und der andere Inhalt wird zwischen den Skriptblöcken als bedeutungslose Zeichen eingefügt. Es ist notwendig zu erklären, dass der Inhalt der Analyse tatsächlich mehr als das ist. Wenn Sie viele Programme lesen, wissen Sie auch, dass einige Runat -Attribute als Server -Objekt> -Objekt gekennzeichnet sind.
3. Das Skript im Skriptblock der Engine.
<%
Dim i
Für i = 1 bis 5
%> Hallo Welt!
< % Next %>
Die Engine analysiert diese Skriptblöcke nicht separat, sondern macht Syntaxfehler in beiden Skriptblöcken. Wir erhalten also die folgenden Schlussfolgerungen: Nicht alle Nicht -Server -Skripte werden an den Client gesendet. Der Server darf sich keine Sorgen um die Ausführung des Client -Skripts machen, aber Sie können verschiedene Client -Skripte über das Skript des Servers ausgeben.
4. Die endgültige Engine erzeugt einen Textfluss oder das Ausführungsergebnis des Skripts. Der Client -Browser wird auf der Seite angezeigt.
< %… %> Und <script runat = server> ... </script>
Sie sind die Server -Side -Skripte und werden gleichzeitig verarbeitet und ausgeführt. Wenn sie ausführen, waren sie insgesamt.
< %… %> Und <script Language = ...> ... </script>
Ersteres ist das Serverskript, letzteres ist das Client -Skript. Ersteres wird zuerst ausgeführt und letzteres wird ausgeführt.
Tatsächlich kann das Skript der beiden gleichzeitig ausgeführt werden, aber der Speicherplatz ist immer noch: Ersteres wird auf dem Server ausgeführt und der letztere wird im Clientbrowser ausgeführt. Ersteres muss logisch im Voraus ausgeführt werden. Gleichzeitig haben wir auch einen Schluss Akquisitionswert Es ist unmöglich, in derselben Serverantwort verarbeitet zu werden.
Rufen Sie Komponenten an
Beachten Sie, dass die Server -Skripte und Client -Skripte Skript sind.
Wenn XMLHTTP für die Griffwebseite des Servers (z. B. das Sammeln) verwendet wird, wird es im Serverskript erstellt. Client.
ADODB.Connection -Komponente wird zum Zugriff auf die Datenbank verwendet. ist kein Zweifel, dass es sich um den Kunden des Kunden handelt, der im Endskript erstellt wurde.
Kurz gesagt, widersprüchliche Dinge und jede Seite haben ihre eigenen Eigenschaften. Verschiedene Dinge haben unterschiedliche Widersprüche; Verstehe nicht, schau nicht ...). Dieses Prinzip erfordert uns, die spezifischen Analyseprinzipien spezifischer Fragen zu halten. Opposition, um eine Methode zu verwenden, um die Widersprüche verschiedener Dinge zu lösen. Ein Schlüssel wird geöffnet, welche Art von Berg singt und welche Art von Lied die Wahrheit ist.
Das Server -Side VBScript -Skript -Erstellungsobjekt verwendet Server.CreateObject (ClassName) -Methode.
Typischer Fehler
<%
Funktion tSize (b)
'Dies ist meine benutzerdefinierte Funktion
TSize = China
Endfunktion
%>
<A href = javaScript: <%tSize ('Variable')%>> Klicken Sie hier, um meine Definitionsfunktion zu verwenden. </a>
Fehleranalyse:
Es verwirrt den Unterschied zwischen dem Serverskript und dem Client -Skript. Während der tatsächlichen Ausführung werden wir feststellen, dass der Client keinen Code wie TSIZE erhält, da TSIZE ein Programm auf dem Server ist und nach der Verarbeitung der Engine (Beachten Sie, dass die Verarbeitung der Funktion durch die Engine durch die Engine nur für den Server aufgerufen ist Skript, es wird nicht verschwunden sein, und es war unmöglich, eine Rolle für den Kunden zu spielen. Das heißt, das Client -Skript kann die Server -Side -Skriptfunktion nicht direkt aufrufen.
Tatsächlich ist dieses Programm mit Grammatik falsch. Wechseln Sie zu <%= tSize (Variable)%> Es gibt keinen Grammatikfehler im Server -Side -Skript. : JavaScript: China, China, es kann nicht ausgeführt werden.
Der Effekt des Serverskripts auf das Client -Skript
Wie bereits erwähnt, wird das Serverskript im Voraus logisch im Client -Skript ausgeführt, sodass ein solcher Code möglich ist:
<%
Dim i
Für i = 1 bis 5
Antwort.Write <script type = text/javaScript> _
& Alarm ('Hallo Welt! & I &') </script>
Nächste
%>
Über die Ausführung der Antwort.Redirect und JavaScript
Beachten Sie, dass das Schreiben des folgenden Code falsch ist:
<%
Antwort.Redirect Index.asp
Antwort.Write <script type = text/javaScript> _
& alert ('Passwortfehler!') </script>
%>
Dies ist ein häufiger Fehler.
Der Grund hängt mit dem Umgang mit den beiden Codezeilen zusammen. Die beiden Codezeilen können nicht gleichzeitig funktionieren.
Antwort ist ein Text für den Client.
Die Antwort.Redirect sendet eine HTTP -Headerinformation an den Client (Wie lautet die HTTP -Header -Informationen? Zum Beispiel ist das Schreiben der Client -Cookies HTTP -Headerinformationen. Browser, deshalb ändern wir manchmal das Kabel des Servers und das Kabel des Servers und des Ändern Sie die falschen Cookies, da das Thema übertragen wurde, und es dürfen keine HTTP -Headerinformationen senden. Unabhängig davon, wie viele Inhalte in den Puffer geschrieben wurden, sobald die Antwort aufgerufen wird, wird sie aufgerufen und wird aufgerufen. Wenn Sie die Ausführung des Programms dynamisch verfolgen, werden wir auch feststellen, dass das Programm nach dem Aufrufen der Antwort die Ausführung des Programms beendet. Achten Sie also auf das Server -Side -Programm, bevor die Antwort aufgerufen wird.
Wie sollte das obige Beispiel geändert werden? Wenn Sie den Index.asp nicht ändern möchten, um die Skriptaufforderung hinzuzufügen, können Sie die Lenkanweisung nur in das Client -Skript für die Ausführung einfügen:
<%
Antwort.Write <script type = text/javaScript> _
& alert ('!');
%>