Серия лекций ASP (15) Использование HTML-форм
Автор:Eve Cole
Время обновления:2009-05-30 19:58:48
Используя объект ASP Request, вы можете создать простой, но мощный сценарий для сбора и обработки данных таблицы HTML. В этом разделе вы не только узнаете, как создать базовый сценарий обработки таблиц, но также получите некоторые полезные методы проверки информации о таблицах на веб-сервере и в браузере пользователя.
О HTML-таблицах
Таблицы HTML, наиболее распространенный метод сбора веб-информации, представляют собой специальные структуры HTML-тегов, обеспечивающие элементы управления пользовательским интерфейсом на веб-странице. Текстовые поля, кнопки и флажки — это типичные элементы управления, которые позволяют пользователям взаимодействовать с веб-страницами и отправлять информацию на веб-сервер.
Следующий пример HTML создает форму, в которой пользователь может ввести свое имя, возраст, и содержит кнопку, которая отправляет эту информацию на веб-сервер. Форма также содержит неявный элемент управления (не отображаемый веб-браузером), который можно использовать для передачи дополнительной информации в веб-браузер.
<FORM METHOD="POST" ACTION="myfile.asp">
<INPUT TYPE="текст" NAME="имя">
<INPUT TYPE="текст" NAME="фамилия">
<INPUT TYPE="текст" NAME="возраст">
<INPUT TYPE="скрытый" NAME="userstatus" VALUE="новый">
<INPUT TYPE="отправить" VALUE="Ввести">
</ФОРМ>
Формы, обрабатывающие входные данные ASP. Когда форма отправляет информацию на веб-сервер, веб-браузер пользователя запрашивает файл .asp, указанный с атрибутом ACTION тега HTML <FORM> (в предыдущем примере файл назывался Myfile.asp). . Файлы .asp содержат сценарии, которые манипулируют значениями таблицы, например отображают таблицу результатов или запрашивают информацию из базы данных.
Существует три способа сбора значений из таблиц HTML с помощью файлов .asp.
Статический файл .htm может содержать таблицу, значения которой передаются в файл .asp.
Файл .asp может создать форму, которая отправляет информацию в другой файл .asp.
Файл .asp может создать форму, которая отправляет информацию самому себе, в файл, содержащий форму.
Первые два метода работают одинаково, и когда форма взаимодействует с программой-шлюзом, отличной от ASP, она может включать команды для чтения и ответа на выбор пользователя.
Создание файла .asp, содержащего определение таблицы и отправляющего информацию самому себе, является более сложным, но эффективным способом работы с таблицами. Этот процесс продемонстрирован в разделе «Проверка входных данных формы».
Получить ввод формы
Объект ASP Request предоставляет две коллекции, которые значительно упрощают задачу получения информации о форме, прикрепленной к URL-запросу.
Коллекция QueryString
Коллекция QueryString получает значение, передаваемое на веб-сервер, в виде текста, следующего за вопросительным знаком в запрошенном URL-адресе. Значения таблицы можно добавить к запрошенному URL-адресу с помощью метода HTTP GET или вручную добавить значения таблицы в URL-адрес.
Например, если в предыдущем примере таблицы использовался метод GET (ACTION = «GET») и пользователь ввел Джефф, Смит и 30, на сервер будет отправлен следующий URL-запрос:
http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new
Myfile.asp содержит следующий сценарий обработки таблицы:
Здравствуйте, <%= Request.QueryString("firstname") %> <%= Request.QueryString("lastname") %>.
Вам <%= Request.QueryString("age") %> лет.
<%
Если Request.QueryString("userstatus") = "новый пользователь", то
Ответ.Напишите «Это ваш первый визит на этот веб-сайт!»
Конец, если
%>
В этом случае веб-сервер вернет веб-браузеру пользователя следующий текст:
Здравствуйте, Джефф Смит. Вам 30 лет. Это ваш первый визит на этот сайт!
Коллекция QueryString имеет необязательный параметр, который можно использовать для доступа к одному из нескольких значений, отображаемых в теле запроса. Вы также можете использовать свойство Count для подсчета количества вхождений определенного типа значения.
Например, форма, содержащая список из нескольких элементов, может отправить следующий запрос:
http://list.asp?food=apples&food=olives&food=bread
Вы также можете использовать следующую команду для подсчета нескольких значений:
Request.QueryString("еда").Count
Если вы хотите отображать несколько типов значений, List.asp должен содержать следующий сценарий;
<%Total = Request.QueryString("еда").Count%>
<%Для i = от 1 до Всего%>
<%= Request.QueryString("food")(i) %> <BR>
<%Следующий%>
Приведенный выше скрипт отобразит:
яблоки
оливки
хлеб
Сбор форм. При использовании метода HTTP GET для передачи длинных и сложных значений формы на веб-сервер информация может быть потеряна. Большинство веб-серверов имеют тенденцию жестко контролировать длину строк запроса URL-адреса, поэтому длинные значения таблицы, передаваемые с помощью метода GET, обрезаются. Если вам необходимо отправить большие объемы информации из формы на веб-сервер, вы должны использовать метод HTTP POST. Этот метод используется для отправки табличных данных в теле HTTP-запроса, при этом количество отправляемых символов может быть неограниченным. Вы также можете использовать коллекцию Form объекта ASP Request для получения значений, отправленных с помощью метода POST.
Коллекция Form хранит числовые значения так же, как коллекция QueryString. Например, если пользователь заполняет таблицу длинным списком имен, вы можете получить эти имена с помощью следующего сценария:
<% Для i = 1 до Request.Form.Count %>
<% =Request.Form("имена")(i) %>
<% Следующий %>
Проверка входных данных формы Хороший сценарий обработки формы должен проверять достоверность введенной в форму информации перед обработкой данных. Сценарии проверки могут проверять правильность типа информации, которую пользователи вводят в форму. Например, если ваш веб-сайт содержит форму, позволяющую пользователям рассчитывать финансовую информацию, перед обработкой результатов необходимо убедиться, что пользователь действительно ввел числовую информацию, а не текст.
Очень удобный способ проверки ввода формы — создать форму, которая передает информацию самой себе. В этом случае файл .asp содержит таблицу, из которой можно получить информацию. Например, следующий скрипт проверяет, что пользователь ввел значение в поле таблицы «возраст», передавая информацию самому себе:
<% Если Isnumeric(Request.QueryString("Возраст")), то %>
<p>Здравствуйте, ваш возраст <%=Request.QueryString("age")%>
<%Еще%>
<p>Пожалуйста, введите числовой возраст.
<%Конец Если %>
<FORM METHOD="POST" ACTION="verify.asp" >
Имя: <INPUT TYPE="текст" NAME="Имя" >
Возраст: <INPUT TYPE="text" NAME="Возраст" >
<INPUT TYPE="отправить" VALUE="Ввести">
</ФОРМ>
В этом примере сценарий также находится в том же файле Verify.asp, который содержит таблицу. Форма передает информацию самой себе, указав Verify.asp в атрибуте ACTION.
Вы также можете создавать клиентские сценарии для проверки того, что пользователи ввели достоверную информацию. Проверка вводимых пользователем данных в веб-браузере может уменьшить сетевой трафик на веб-сервер, а также быстрее выдавать пользователям сообщения об ошибках при вводе формы. Следующий сценарий запускается в веб-браузере пользователя и проверяет информацию пользователя перед отправкой ее на веб-сервер.
<SCRIPT LANGUAGE="VBScript">
<!--
Подписка btnEnter_OnClick
DimTheForm
Установите TheForm = Document.MyForm
Если IsNumeric(TheForm.Age.Value) Тогда
Форма.submit
Еще
Msgbox «Пожалуйста, введите числовой возраст».
Конец, если
Конец субтитра
//-->
</СКРИПТ>
<FORM METHOD="POST" NAME= MyForm ACTION="myfile.asp" >
Имя: <INPUT TYPE="текст" NAME="Имя" >
Возраст: <INPUT TYPE="text" NAME="Возраст" >
<INPUT TYPE="button" NAME="btnEnter" VALUE="Enter">
</ФОРМ>