Tout d'abord, jetons un coup d'œil au processus de l'exécution de la page ASP
1. IIS trouve un fichier ASP et le soumette au traitement ASP Engine (généralement ASP.DLL).
2. Le moteur ouvre ce fichier ASP et trouve le contenu entre <% et%>. Seul le contenu du bloc de script est analysé par le moteur, et l'autre contenu est inséré entre les blocs de script en tant que caractères dénués de sens. Il est nécessaire d'expliquer qu'en fait, le contenu de l'analyse est plus que cela. Si vous lisez beaucoup de programmes, vous saurez également que certains attributs Runat sont marqués comme objet <objet> du serveur.
3. Le script dans le bloc de script du moteur.
<%
Dim je
Pour i = 1 à 5
%> Bonjour le monde!
<% Next%>
Le moteur n'analyse pas ces blocs de script séparément, mais fait des erreurs de syntaxe dans les deux blocs de script. Nous obtenons donc les conclusions suivantes: tous les scripts non-serveur ne seront pas envoyés au client. Le serveur ne doit pas se soucier de l'exécution du script client, mais vous pouvez publier différents scripts clients via le script du serveur.
4. Le moteur final génère un flux de texte ou le résultat d'exécution du script. Le navigateur client s'affiche sur la page.
<%…%> Et <script runat = server> ... </cript>
Ce sont les scripts de la côté du serveur et sont traités et exécutés en même temps. Quand ils s'exécutent, ils étaient dans son ensemble.
<%…%> Et <Script Language = ...> ... </ Script>
Le premier est le script de serveur, le second est le script client. Le premier est exécuté en premier et le second est exécuté.
En fait, le script des deux peut être exécuté en même temps, mais l'espace est différent. Le premier doit être logiquement exécuté à l'avance. En même temps, nous avons également une conclusion: dans l'exécution de la même page, le script client ne peut pas être renvoyé au script du serveur de toute façon, c'est-à-dire que le client parcourt votre livre de messages et soumet un nouveau message ou tout script client Valeur d'acquisition Il est impossible d'être traité dans la même réponse du serveur.
Appeler des composants
Notez que les scripts du serveur et les scripts clients sont le script.
Si XMLHTTP est utilisé pour la page Web de saisie du serveur (comme la collecte), il sera créé dans le script du serveur. Client.
Le composant Adodb.Connection est utilisé pour accéder à la base de données. n'est sans aucun doute qu'il est sur le client sur le client créé dans le script final.
En bref, les choses contradictoires et chaque côté ont leurs propres caractéristiques. Différentes choses ont des contradictions différentes; des processus différents et des étapes différentes de la même chose ont des contradictions différentes dans le développement de la même chose; Comprenez ne pas regarder ...). Ce principe nous oblige à adhérer aux principes d'analyse spécifiques des questions spécifiques. Opposition pour utiliser une méthode pour résoudre les contradictions de différentes choses. Une clé est ouverte, quel genre de montagne chante et quel genre de chanson est la vérité.
L'objet de création de script VBScript de serveur utilise la méthode Server.CreateObject (ClassName).
Erreur typique
<%
Fonction tSize (b)
'C'est ma fonction personnalisée
TSize = Chine
fonction finale
%>
<A href = javascript: <% TSize ('variable')% >> Cliquez ici pour utiliser ma fonction de définition </a>
Analyse des erreurs:
Il confond la différence entre le script du serveur et le script client. Pendant l'exécution réelle, nous constaterons que le client ne reçoit aucun code tel que TSIZE, car TSize est un programme sur le serveur, et après le traitement du moteur (notez que le traitement du moteur de la fonction est purement appelé pour le serveur Script, ce ne sera pas qu'il a disparu, et il était impossible de jouer un rôle sur le client. C'est-à-dire que le script client ne peut pas appeler directement la fonction de script de la peau du serveur.
En fait, ce programme est mauvais avec la grammaire. Eh bien, passez à <% = tsize (variable)%> Il n'y a pas d'erreur de grammaire au script de serveur. : Javascript: Chine, Chine, il ne peut pas être exécuté.
L'effet du script de serveur sur le script client
Comme mentionné précédemment, le script serveur est logiquement exécuté dans le script client à l'avance, donc un tel code est possible:
<%
Dim je
Pour i = 1 à 5
Réponse.write <script type = text / javascript> _
& Alert ('Hello World! & I &') </script>
Suivant
%>
Sur l'exécution de la réponse.redirect et javascript
Notez que l'écriture du code suivant est erronée:
<%
Réponse.redirect index.asp
Réponse.write <script type = text / javascript> _
& alert ('Erreur de mot de passe!') </cript>
%>
Il s'agit d'une erreur courante.
La raison est liée à la gestion des deux lignes de code. Les deux lignes de code ne peuvent pas fonctionner en même temps.
Response.Write est un texte pour le client.
La réponse.redirect envoie une information d'en-tête HTTP au client (quelles sont les informations d'en-tête HTTP? Donc, par exemple, la rédaction des cookies du client est des informations d'en-tête HTTP. Browser, c'est pourquoi nous modifions parfois le câble du serveur et Modifiez les mauvais cookies, car le sujet a commencé à être transmis, et il n'est pas autorisé à envoyer des informations d'en-tête HTTP. Peu importe le nombre de contenus écrits dans le tampon, une fois que la réponse est appelée, elle sera appelée et sera appelée. Si vous suivez dynamiquement l'exécution du programme, nous constaterons également qu'après appeler Response.Redirect, le programme cesse de s'exécuter, alors faites attention au programme de serveur avant d'appeler Response.Redirect.
Alors, comment l'exemple ci-dessus doit être modifié? Si vous ne souhaitez pas modifier l'index.asp pour ajouter l'invite de script, vous ne pouvez mettre les instructions de direction que dans le script client pour l'exécution, tout comme ceci:
<%
Réponse.write <script type = text / javascript> _
& alert ('!');
%>