Лекция ASP 2: Чтение данных, отправленных через формы
Автор:Eve Cole
Время обновления:2009-05-30 19:58:19
Самое важное для изучения ASP — это освоить шесть встроенных объектов ASP. На самом деле, в предыдущей лекции мы уже узнали об объекте Response (правда? Вы ошиблись!), а также о наиболее часто используемых методах Write, методе Redirect и свойстве Expires в объекте Response. Когда вы видите концепции объектов, методов, свойств, коллекций и событий (я не знаю ни одного из них!), если вы никогда раньше с ними не сталкивались, вы умны и не заботитесь об этих концепциях. Просто знайте, как их использовать. Я считаю, что это только начало. Главное — копировать. Давайте продолжим изучение объекта Request на примерах. Чтобы углубить наше понимание, запустите эти программы и посмотрите выходные результаты.
1. Используйте Request.ServerVariables для получения переменных среды. Эта часть очень проста, но полученное содержимое очень важно. Как его получить? Пожалуйста, посмотрите следующий пример:
<%@ Language=VBScript %>
<HTML><ТЕЛО>
<% 'wuf8.asp
Response.Write "Путь для запуска файла ASP: " &_
Request.ServerVariables("Script_Name") & "<Br>"
Response.Write "Вернуть длину данных содержимого: " &_
Request.ServerVariables("Content_Length") & "<Br>"
Response.Write "Вернуть IP-адрес клиента: " &_
Request.ServerVariables("Remote_Addr") & "<Br>"
Ответ. Напишите «Имя браузера:» &_
Request.ServerVariables("HTTP_USER_AGENT") & "<Br>"
Response.Write "Вернуться к фактическому физическому пути домашней страницы: " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
%>
<таблица colspan=8 cellpadding=5 border=0>
<тр>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Имя переменной среды</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Содержимое</font></td>
</tr>
<тр>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
результат1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
результат2
</font></td></tr>
</таблица>
</BODY></HTML>
Теперь вы должны убедиться, насколько простой оказалась процедура wuf2.asp из предыдущей лекции!
Примечание. HTML-разметка во второй части этой программы предназначена исключительно для подготовки к следующему примеру, поэтому не удивляйтесь. Итак, какие еще существуют переменные среды? Вы узнаете это, выполнив следующий пример (в этой программе удалены некоторые коды, для облегчения понимания лучше всего загрузить исходную программу с моего сайта).
<%@ Language=VBScript %>
<% 'wuf9.asp
Опция явная
Дим Св
%>
<HTML><ТЕЛО>
<таблица colspan=8 cellpadding=5 border=0>
<тр>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">Имя переменной среды</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">Результаты</font></td>
</tr>
<%
для каждого Sv в Request.ServerVariables
Ответ. Напишите "<tr>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Response.Write Sv
Ответ. Напишите "</font></td>"
Response.Write "<td bgcolor='f7efde' align=CENTER> <font style='ARIAL NARROW' size='2'>"
Ответ. Запрос на запись. Серверные переменные (Sv)
Response.Write "</font></td></tr>"
следующий
%>
</таблица>
</BODY></HTML>
Цикл For...Each используется здесь для вывода списка всех элементов коллекции. Если вы не понимаете вторую половину, сравните wuf8.asp, посмотрите на текущие результаты и внимательно разберитесь (как вы к этому относитесь?).
2. Передать данные на сервер через форму (под этим можно понимать и то, как сервер читает данные, отправленные клиентом)
Если вы работали над домашней страницей, вы должны знать, что на многих домашних страницах обычно используются формы форм, позволяющие пользователям вводить данные, а затем отправлять их с помощью кнопки «Отправить». «Метод» в форме From имеет два основных метода: POST и GET. После «действия» обычно указывается файл .cgi, .pl или .asp. Сегодня мы собираемся научиться писать этот .asp. файл.
(1) Если вы используете метод POST для передачи данных, используйте Request.Form для чтения данных.
Сначала отредактируйте следующий файл wuf10.htm, чтобы пользователи могли вводить данные:
<html>
<body bgcolor="#FFFFFF">
<form метод="post" action="wuf11.asp">
Имя: <input type="text" name="ваше имя"><br>
Пол: <select name="gender">
<option>Мужской</option>
<option>Женский</option>
</выбрать> <br>
Сообщение: <textarea name="message">Привет!
Обратите внимание на обработку многострочного текста</textarea> <br>
Хобби (удерживайте клавишу Ctrl, чтобы выбрать несколько):
<select name="hobby" Multiple size="4">
<option>Компьютер</option>
<option>Покупки</option>
<option>Фильмы</option>
<option>Чтение</option>
</выбрать> <br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</форма>
</тело>
</html>
Затем напишите файл wuf11.asp, который wuf10.htm должен использовать для сбора данных:
<%@ Language=VBScript %>
<% 'wuf11.asp
Опция явная
Ответ.Истекает=0
Dim StrName, StrGender, StrM, StrMsg
StrName = Trim(Request.Form("ваше имя")) 'Функция Trim используется для удаления начальных и конечных пробелов.
StrGender = Trim(Request.Form("пол"))
StrM = Trim(Запрос.Форма("сообщение"))
StrMsg = Заменить(StrM,vbcrlf,"<Br>" & vbcrlf)
' vbcrlf эквивалентен комбинации возврата каретки и перевода строки. Что касается функции replace, то ее функция заключается в замене vbcrlf в строке StrM на "<Br>" & vbcrlf (подумайте, пожалуйста, об использовании этого vbcrlf? Вы поймете это, посмотрев исходный HTML-код выходного файла) Подробную информацию см. в справке по VBScript.
%>
<HTML><ТЕЛО>
Имя: <%= StrName%><Br><Br>
Пол: <%= StrGender%><Br><Br>
Сообщение: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
Фактически, значение кнопки «Отправить» также передается: <Br>
<%= Request.Form("Отправить")%><Br><Br>
<% 'Сначала разберитесь в вышеизложенном, а затем посмотрите, как читать несколько вариантов, если вам интересно
Response.Write "Общее количество выбранных хобби:" & Request.Form("хобби").Count & "<Br>"
Дим я
Для I = 1 в Request.Form("хобби").Count
Response.Write Request.Form("хобби")(I) & "<Br>"
Следующий
%>
</BODY></HTML>
В этом примере для простоты понимания мы используем две программы. На самом деле вы также можете использовать только одну программу. Если вам интересно, ознакомьтесь со следующей процедурой wuf12.asp, которая поможет вам глубже понять переменные среды.
<%@ Language=VBScript %>
<% 'wuf12.asp
Опция явная
Ответ.Истекает=0
Dim StrName, StrGender, StrM, StrMsg
Если Request.ServerVariables("Content_Length") <> 0 Тогда
'После отправки данных длина не будет равна 0, поэтому выполните следующий оператор, чтобы отобразить результат
'Следующая часть фактически скопирована из wuf11.asp
StrName = Trim(Request.Form("Ваше имя"))
StrGender = Trim(Request.Form("пол"))
StrM = Trim(Запрос.Форма("сообщение"))
StrMsg = Заменить(StrM,vbcrlf,"<Br>" & vbcrlf)
%>
<HTML><ТЕЛО>
Имя: <%= StrName%><Br><Br>
Пол: <%= StrGender%><Br><Br>
Сообщение: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
<%
Response.Write "Общее количество выбранных хобби:" & Request.Form("хобби").Count & "<Br>"
Дим я
Для I = 1 в Request.Form("хобби").Count
Response.Write Request.Form("хобби")(I) & "<Br>"
Следующий
%>
</BODY></HTML>
<%
Еще
'При первой загрузке страницы данные не передаются, поэтому предыдущая часть не выполняется, а начинается отсюда
«Вот почему существуют две пары <HTML></HTML>
«Просто скопируйте wuf10.htm ниже.
'<form Method="post" action="wuf11.asp"> был заменен переменными среды, но это точно то же самое
Response.Write "Посмотрите на результаты: " & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><ТЕЛО>
<form метод="post" action="<%= Request.ServerVariables("Script_name")%>">
Имя: <input type="text" name="ваше имя"><br>
Пол: <select name="gender">
<option>Мужской</option>
<option>Женский</option>
</выбрать> <br>
Сообщение: <textarea name="message">Привет!
Обратите внимание на обработку многострочного текста</textarea> <br>
Хобби (удерживайте клавишу Ctrl, чтобы выбрать несколько):
<select name="hobby" Multiple size="4">
<option>Компьютер</option>
<option>Покупки</option>
<option>Фильмы</option>
<option>Чтение</option>
</выбрать> <br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</форма>
</BODY></HTML>
<%Конец Если%>
(2) Если вы используете метод GET для передачи данных, используйте Request.Querystring для чтения данных.
Сначала отредактируйте следующий файл wuf13.htm, чтобы пользователи могли вводить данные:
<html>
<body bgcolor="#FFFFFF">
<form метод="get" action="wuf14.asp">
Английское имя: <input type="text" name="Ename"> <br>
Китайское имя: <input type="text" name="Cname"><br>
Пол: <select name="gender">
<option>Мужской</option>
<option>Женский</option>
</выбрать> <br>
<input type="submit" name="Submit" value="Submit">
<input type="reset" name="Submit2" value="Reset">
</форма>
</тело>
</html>
Затем напишите файл wuf14.asp, который wuf13.htm должен использовать для сбора данных:
<%@ Language=VBScript %>
<% 'wuf14.asp
Опция явная
Ответ.Истекает=0
Тусклый StrCname, StrEname, StrGender
StrEname = Trim(Request.QueryString("Ename")) 'Функция Trim используется для удаления начальных и конечных пробелов.
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("пол"))
%>
<HTML><ТЕЛО>
Английское имя: <%= StrEname%><Br><Br>
Китайское имя: <%= StrCname%><Br><Br>
Пол: <%= StrGender%><Br><Br>
Взгляните на отправленную строку: <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
Чтобы лучше понять эту программу, вам лучше сначала попробовать эффект процедуры wuf13.htm в браузере и посмотреть на результаты вывода. Вы обнаружите, что длинная строка в адресной строке выглядит знакомо, как и тогда. поиск на Yahoo Видел почти то же самое. В настоящее время вы пытаетесь ввести «http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=female» непосредственно в адресной строке и получаете тот же результат. Итак, вы можете увидеть это так: результатом работы wuf13.htm является получение ссылки с такими параметрами. Request.QueryString считывает все данные из дополнительных параметров адреса http://.
Фактически, при нажатии кнопки «Отправить» строка запроса (входные данные) будет добавлена к URL-адресу в виде параметров (каждый параметр отделяется знаком «&») для достижения цели передачи данных. При этом обратите внимание, что в строке запроса, отображаемой в браузере, нет китайского языка, а есть нераспознаваемые искаженные символы, содержащие знаки процента. Это связано с тем, что она закодирована. Наконец, как и прежде, эти две программы также можно объединить в одну (рутину wuf15.asp, ее нужно скачать с моего сайта).
Несколько примечаний:
1. Если для отправки данных вы используете метод POST, Request.ServerVariables("Content_Length")>0.
Если для отправки данных вы используете метод GET, то Request.ServerVariables("Query_String") <> "".
2. Поняв принцип, вы можете смешивать Request.Form и Request.QueryString в одном файле ASP.
3. Если в форме несколько кнопок, как определить, какую кнопку нажал пользователь? Если вы обратите внимание, вы обнаружите, что в подпрограмме wuf11.asp есть предложение, в котором также передается значение кнопки «Отправить», и аналогичное значение можно найти в строке запроса, сгенерированной в wuf13.htm. Обратите внимание: передается только значение нажатой кнопки, тогда как значение других кнопок равно «». Это является основанием для принятия решения (на веб-сайте InfoWeb «Новости планирования Китая» есть аналогичная статья).