в чем разница между <% %> и <script language="“vbscript”" runat="“server”"> in classic asp?

StackOverflow https://stackoverflow.com/questions/1447822

Вопрос

Я не смог найти много документации в Интернете

пока что очевидная разница, по-видимому, заключается в том, что вы не можете смешивать html и vbscript, используя тег "script"

например, это нормально

<% public sub display_literal() %>
  literal
<% end sub %>

но с тегом script вы должны

<script language="vbscript" runat="server">
public sub display_literal2()
    response.write "literal2</br>"
end sub
</script>

на этой странице

http://www.newobjects.com/pages/ndl/alp/asp-structure.htm

там говорится , что

В классическом ASP скрипт, написанный на языке сценариев по умолчанию для страницы (т.е.язык , принятый для <% %> теги) выполняется вторым - напримервесь код скрипта в <% %> теги инициализируются после всех <SCRIPT RUNAT="SERVER" ...=""> scripts.

но я провел пару тестов и не смог это проверить...

Я спрашиваю, потому что у меня был скрипт (сейчас у меня его нет под рукой), который использовал <% %> выдал мне ошибку, изменив ее на <script> tag solved the problem, but I'd like to know why....

в любом случае, я думаю, что мы должны использовать <script> tag for functions and procedures that are to be called from <% %> tags...верно?

Это было полезно?

Решение

Прежде всего, вам нужно понять, что есть разница в способе работы на стороне сервера script теги обрабатываются в зависимости от того, совпадает ли указанный язык с языком по умолчанию для страницы.

Порядок таков:-

  1. Запустите все скрипты в <script runat="server" теги, в которых указанный язык не соответствует языку по умолчанию.Они выполняются в порядке оформления документов.
  2. Запустите сценарий по умолчанию.Это означает выполнение подразумеваемой записи в ответ, где на странице есть статическое содержимое (материал, которого нет в runat="server" бирки или внутри <% %>) и любой промежуточный код в <% %> опять же, очевидно, в порядке следования документов.
  3. Запустите любой код на глобальном уровне, найденный в <script runat="server" теги, язык которых соответствует языку скрипта по умолчанию.

Обратите внимание, что все скрипты проходят начальный синтаксический анализ перед выполнением фазы 1, следовательно, любые функции, которые могут быть определены скриптами, выполняемыми на фазе 3, будут доступны для вызова с фазы 1.

Другие советы

У меня только что возникла проблема по этому поводу и, для практических целей, код внутри <% %> теги выполняет перед кодом внутри <script runat="server"> </script>.

Объявление функций и процедур кажется не на меня повлияет это различие в том, как IIS понимает классические теги ASP - по крайней мере, поскольку я не использую условную загрузку кода с помощью "Server.Выполнить".

мой сервер работает под управлением Microsoft-IIS / 5.1, как указано в запросе.Серверные переменные ("SERVER_SOFTWARE").

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top