Рекомендуется: как форматировать ASP Pagination и дату в формат RFC822 Рассчитайте страницу, хе-хе, вам не нужно судить о следующем указанном контенте: intnumpage = abs (int (-((intnumRecord/intperpage))) Обрабаться к дате
Если компьютерная комната собирается закрыться, или если вы спешите на встречу с MM, пожалуйста, перейдите прямо к четвертому абзацу.
Сценарии, описанные ниже, включают в себя сценарии на стороне сервера и сценарии на стороне клиента. Скрипты на стороне сервера относятся к части сценариев, работающих на сервере. Например, общий ответ. Writh, очевидно, запускается на сервере. Скрипты на стороне сервера могут быть записаны на языках VBScript и JScript. В этой статье используется VBScript, JScript - тот же принцип.
Клиентские сценарии также можно считать, что включают два языка: VBScript и JavaScript, которые являются языками сценариев, которые работают в браузерах клиентов. Например, когда мы посещаем веб-страницу, появляется окно сообщений, которое выполняется с использованием клиентских сценариев (оповещение, MSGBOX и т. Д.), И это, очевидно, не то, что могут сделать сценарии на стороне сервера. Существует большая разница между клиентскими сценариями и серверными сценариями (в браузерах, таких как IE и Firefox), то есть клиентские скрипты могут получить доступ к модели объекта документа (DOM) и управлять объектами на странице (например, изменение заголовка страницы, изменение атрибута Innerhtml Div и т. Д.).
Во -первых, давайте поймем процесс исполнения страницы ASP
1.IIS находит файл ASP и передает его в двигатель ASP (обычно ASP.DLL) для обработки.
2. Двигатель открывает этот файл ASP и находит содержимое между < % и %>, и, конечно, содержание между <script runat = server> и соответствующим </script>. Это содержимое называется блоками сценария. Только содержание в блоке сценария проанализируется двигателем, а другой контент игнорируется и вставляется между блоками сценария в качестве бессмысленных символов. Необходимо уточнить, что на самом деле, это больше, чем этот контент анализируется. Серверная сторона, включенные файлы класса <!-#include ***->, также включены и обрабатываются двигателем. Если вы прочитаете больше программ, вы также узнаете, что некоторые объекты <Object>, помеченные как сервер с атрибутом Runat, также будут обработаны, поэтому я не буду подробно обсуждать его здесь.
3. Двигатель выполняет сценарии в блоке сценария. Эти сценарии на стороне сервера выполняются в целом, то есть можно записано в следующем коде:
| Ниже приведено цитируемое содержание: <% DIM I. Для i = 1-5 %> Привет, мир! < % Следующее %> |
Двигатель не анализирует эти блоки сценария отдельно, что приводит к возникновению ошибок синтаксиса в обоих блоках сценария. Таким образом, мы пришли к следующему выводу: не весь не серверный код скрипта будет отправлено клиенту, и возможно, что этот код сценария не сервера ограничен блоком скрипта. Сервер определенно не будет беспокоиться о выполнении клиентских сценариев, но различные клиентские скрипты могут быть выведены через серверные сценарии.
4. Клиентский браузер отображает страницу. В настоящее время исходный код (исходный файл) страницы не содержит сценарии на стороне сервера, но содержит результат выполнения сценариев на стороне сервера (это очевидно).
< %… %> И <script runat = server>… </script>
Все это сценарии на стороне сервера, которые обрабатываются и выполняются одновременно. Они выполнены в целом.
< %… %> И <script language =…>… </script>
Первый-это скрипт на стороне сервера, а последний-сценарий на стороне клиента. Первый выполняется первым, а последний выполняется позже.
На самом деле, это не совсем правда. Сценарии двух могут быть выполнены одновременно, но пространство отличается, и оно все еще: первое выполняется на сервере, а последнее выполняется в браузере клиента. Первый должен быть логически выполнен заранее последним. В то же время мы также пришли к выводу, что во время выполнения той же страницы клиент -скрипт не может быть возвращен на сценарий сервера. То есть клиент просматривает вашу книгу сообщений и представляет новое сообщение, или значение, полученное каким -либо клиентским скриптом, не может быть обработано в том же ответе сервера.
О вызове компонента
Обратите внимание, что сценарии на стороне сервера и сценарии на стороне клиента являются сценариями, поэтому вы можете естественным образом создавать компоненты XMLHTTP, компоненты ADODB.Connection и т. Д., Но не нигде.
Если XMLHTTP используется для ползания веб -страниц (например, сбора) на сервере, он должен быть создан в скрипте сервера. Если он используется для Ajax для клиента, а бэкэнд обращается к страницам на сервере без обновления, он работает на клиенте и естественным образом создается на клиенте.
Компонент AdoDB.Connection используется для доступа к базе данных. Как правило, он создается на стороне сервера. В конце концов, серверная программа ASP запускает данные базы данных. Однако, если ваша база данных действительно подключена к клиенту (например, http://bbs.bccn.net/thread-224966-1-2.html), то он, несомненно, создается в сценарии клиента.
Короче говоря, противоречивые вещи и их соответствующие аспекты имеют свои характеристики. Разные вещи имеют разные противоречия; То же самое имеет разные противоречия в разных процессах и этапах развития; Различные противоречия в одном и том же, и два разных аспекта одного и того же противоречия имеют свои характеристики (если вы не можете их понять, вы можете игнорировать их ...). Этот принцип требует, чтобы мы придерживались принципа конкретного анализа конкретных проблем, и под руководством принципа универсальности противоречий мы должны специфически проанализировать специфику противоречий и найти правильный способ их разрешения. Противостоять тому же размеру одного метода для разрешения противоречий между разными вещами. Это то, что вы говорите, когда открываете ключ и поете песню, когда идете на гору.
Серверный скрипт VBScript использует метод Server.createObject (className) для создания объектов, а скрипт VBScript на стороне клиента использует метод CreateObject (className) для создания объектов.
Типичная ошибка
| Ниже приведено цитируемое содержание: <% Функция tsize (b) 'Это моя пользовательская функция Tsize = Китай конечная функция %> <a href = javascript: <%tsize ('variable')%>> Нажмите здесь, чтобы использовать функцию, которую я определил </a> (http://bbs.bccn.net/thread-225244-1-1.html) |
Анализ ошибок:
Смущает разницу между сценариями на стороне сервера и сценариями на стороне клиента. При на самом деле мы обнаружим, что клиент вообще не получает никакого кода, подобного TSIZE, потому что TSIZE-это программа на стороне сервера. После обработки двигателя (обратите внимание, что обработка функций двигателя исключительно вызывается сценарием на стороне сервера и не будет отправлена обратно клиенту), и он исчезнет и не может работать на клиенте. Это означает, что клиентские скрипты не могут напрямую вызовать функции сценариев на стороне сервера.
На самом деле, эта программа имеет синтаксические ошибки. Когда двигатель обрабатывает этот контент, он сначала находит содержание между <%и%>, то есть <%tsize ('variable')%>. Очевидно, что этот контент не соответствует синтаксическим правилам VBScript. Что ж, изменение его на <%= tsize (переменная)%> В скрипте на стороне сервера нет ошибок синтаксиса. В настоящее время функция TSIZE может нормально возвращать значение для Китая, поэтому атрибут HREF, полученный клиентом, написан так: 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> %> |
Это распространенная ошибка. Авторы часто думают, что написание кода таким образом может привести к тому, что клиент может всплыть в подсказке ошибки пароля, а затем обратиться к index.asp. На самом деле, этого не может произойти. Даже если две строки кода обмениваются последовательно, невозможно достичь этого эффекта.
Причина связана с тем, как сервер обрабатывает две строки кода. Эти две строки кода не могут работать одновременно.
Response.Write отправляет кусок текста клиенту. Содержание этой части текста может быть сценарием. Клиентский браузер может выполнить этот скрипт после его получения. Обратите внимание, что его можно выполнить только после получения его.
Response.redirect Отправляет заголовок HTTP клиенту (например, что такое заголовок HTTP? Давайте скажем так, например, информация «Написать клиентскому куки -файлам», а информация о заголовке HTTP отправляется обратно в брейд -сервер до того, как субъект HTTP. Это то, почему мы изменяем фигуры, заканчиваем буфер сервера, потому что субъект начинается, и это не подходит для того, чтобы не подходить к серверу, потому что субъект начнулся, и это не подходит для выпуска, потому что субъект начнулся. Информация.), Содержание информации сообщает клиентскому браузеру прыгнуть на страницу, чтобы просмотреть. Обратите внимание, что эта перенаправляющая информация работает немедленно, то есть эта перенаправление информации является эксклюзивной. Когда буфер включается, независимо от того, сколько контента было записано в буфере, используя response.write, после того, как будет вызван ответ. Redirect, буфер будет очищен, и инструкция заголовка будет отправлена в браузер клиента. Если мы динамически отслеживаем выполнение программы, мы также обнаружим, что после вызова ответа. Redirect, программа перестает выполнять, поэтому обратите внимание, что программа на стороне сервера должна закрыть соединение данных и другие операции перед вызовом response.redirect.
Итак, как следует изменить приведенный выше пример? Если вы не хотите изменять этот index.asp, чтобы добавить подсказки сценария, вы можете поместить команду рулевого управления в сценарий клиента, например, например:
| Ниже приведено цитируемое содержание: <% Response.write <script type = text/javascript> _ & alert ('!'); location.href = 'index.asp' </script> %> |
Поделиться: ASP 3.0 Advanced Programming (33) 7.4.2 Обработка ошибок VBScript В VBScript интерпретатор скрипта не может обрабатывать какие -либо ошибки, которые он находит, и продолжать запускать следующее оператор, используя оператор RESUME OR ERROUE. Как только это утверждение будет обработано, двигатель сценария продолжит запускать последующую программу.