Прежде всего, давайте посмотрим на процесс выполнения страницы ASP
1. IIS находит файл ASP и отправляйте его в обработку Engine Engine (обычно ASP.DLL).
2. Двигатель открывает этот файл ASP и находит содержание между <%и%>. Только контент в блоке сценария анализируется двигателем, а другой контент вставляется между блоками сценария в качестве бессмысленных символов. Необходимо объяснить, что на самом деле содержание анализа больше, чем это. Если вы прочитаете много программ, вы также узнаете, что некоторые атрибуты Runat помечены как объект сервера <Object>.
3. Скрипт в блоке сценария двигателя.
<%
DIM I.
Для i = 1-5
%> Привет, мир!
< % Следующее %>
Двигатель не анализирует эти блоки сценария отдельно, но делает ошибки синтаксиса в обоих блоках сценария. Таким образом, мы получаем следующие выводы: не все не -серверные сценарии будут отправлены клиенту. Сервер не должен беспокоиться о выполнении клиентского скрипта, но вы можете вывести различные клиентские скрипты через скрипт сервера.
4. Окончательный двигатель генерирует текстовый поток или результат выполнения сценария. Клиентский браузер отображается на странице.
< %… %> И <script runat = server> ... </script>
Это сценарии сервера и обрабатываются и выполняются одновременно. Когда они исполняются, они были в целом.
< %… %> И <script language = ...> ... </script>
Первый - сценарий сервера, последний - клиент -скрипт. Первый выполнен в первую очередь, а последний выполняется.
Фактически, сценарий из двух может быть выполнен одновременно, но пространство отличается. Первый должен быть логически выполнен заранее. В то же время у нас также есть вывод: в выполнении той же страницы клиент -скрипт не может быть возвращен в сценарий сервера, то есть клиент просматривает вашу книгу сообщений и отправьте новое сообщение или любой клиент -скрипт Значение получения невозможно обработать в одном и том же ответе сервера.
Позвоните для компонентов
Обратите внимание, что сценарии сервера и сценарии клиентов являются сценарием.
Если XMLHTTP используется для захвата сервера (например, сбора), она будет создана в скрипте сервера. Клиент создал.
Компонент AdoDB.connection используется для доступа к базе данных. Без сомнения, он находится на клиенте на клиенте, созданном в конечном сценарии.
Короче говоря, противоречивые вещи и каждая сторона имеют свои характеристики. Разные вещи имеют разные противоречия; Поймите, не смотрите ...). Этот принцип требует, чтобы мы придерживались конкретных принципов анализа конкретных вопросов. Оппозиция использовать один метод для решения противоречий разных вещей. Ключ открыт, какая горная поет и какая песня является правдой.
Сервер -Server VBScript Script Comection использует метод Server.createObject (className).
Типичная ошибка
<%
Функция tsize (b)
'Это моя пользовательская функция
Tsize = Китай
конечная функция
%>
<A href = javascript: <%tsize ('variable')%>> Нажмите здесь, чтобы использовать функцию моей определения </a>
Анализ ошибок:
Это сбивает с толку разницу между скриптом сервера и сценарием клиента. Во время фактического выполнения мы обнаружим, что клиент не получает никакого кода, такого как TSIZE, поскольку TSIZE - это программа на сервере, и после обработки двигателя (обратите внимание, что обработка двигателя функции требуется чисто для сервера Скрипт, это не будет исчез, и было невозможно сыграть роль на клиенте. То есть сценарий клиента не может напрямую вызовать функцию скрипта сервера.
Фактически, эта программа неверна с грамматикой. Что ж, изменение на <%= tsize (переменная)%> В сценарии сервера нет ошибок грамматики. : JavaScript: Китай, Китай, его нельзя казнить.
Влияние скрипта сервера на сценарий клиента
Как упоминалось ранее, сценарий сервера заранее выполняется в сценарии клиента, поэтому такой код осуществляется:
<%
DIM I.
Для i = 1-5
Response.write <script type = text/javascript> _
& Alert ('Hello World! & I &') </script>
Следующий
%>
О выполнении ответа. Redirect и JavaScript
Обратите внимание, что написание следующего кода неправильно:
<%
Response.redirect index.asp
Response.write <script type = text/javascript> _
& alert ('ошибка пароля!') </script>
%>
Это общая ошибка.
Причина связана с обработкой двух строк кода. Две строки кода не могут работать одновременно.
Response.Write - это текст для клиента.
Response.redirect отправляет информацию о заголовке HTTP клиенту (какова информация HTTP заголовка? Так что, например, написание клиентских файлов cookie является информацией HTTP. Измените неправильные файлы cookie, потому что субъект начал передаваться, и не разрешается отправлять информацию о заголовке HTTP. Независимо от того, сколько содержимого было написано в буфере, после того, как будет вызван ответ. Redirect, оно будет вызвано и будет вызвано. Если вы динамически отслеживаете выполнение программы, мы также обнаружим, что после вызова ounce.redirect программа перестает выполнять, поэтому обратите внимание на программу сервера -перед вызовом response.redirect.
Итак, как следует изменить приведенный выше пример? Если вы не хотите изменять index.asp, чтобы добавить подсказку сценария, то вы можете поместить инструкцию по рулевому управлению в сценарии клиента для выполнения, точно так же:
<%
Response.write <script type = text/javascript> _
& Alert ('!');
%>