Замечание.Чтобы еще больше усложнить ситуацию, напомним также о JScript.NET – управляемом языке программирования, с помощью которого, используя подобный сценариям синтаксис, можно строить компоновочные блоки .NET.
Чтобы продемонстрировать роль сценариев клиента, давайте выясним, как можно выполнить перехват событий, посылаемых HTML-элементами пользовательского интерфейса клиента. Предположим, что вы добавили в свою HTML-страницу default.htm тип Button (с именем btnHelp), которая должна предоставить пользователю возможность увидеть информацию справки. Чтобы выполнить перехват события Click для этой кнопки, активизируйте окно просмотра HTML и выберите имя кнопки из левого раскрывающегося списка. Затем в правом раскрывающемся списке выберите событие onclick. В результате этого в определение атрибута нового типа Button будет добавлен атрибут onclick.
‹input id="btnHelp" type="button" Value="Help" language="javascript" onclick="return btnHelp_onclick()"/›
Visual Studio 2005 также создаст пустую функцию JavaScript, которая будет вызываться при щелчке пользователя на кнопке. Чтобы отобразить окно сообщения клиента, нужно в пределах этой заглушки просто использовать метод alert().
‹script language="javascript" type="text/javascript"›
‹!--
function btnHelp_onclick(){
alert("Это не так уж трудно. Просто щелкните на кнопке Отправить!");
}
-->
‹/script›
Обратите внимание на то, что блок сценария помещен в рамки HTML-комментария (‹!-- --›). Причина этого очень проста. Если ваша страница окажется в браузере, не поддерживающем JavaScript, программный код будет интерпретирован как комментарий и потому проигнорирован. Конечно, возможности вашей страницы будут более узкими, но зато ваша страница не будет полностью отвергнута браузером.
Контроль допустимости вводимых данных
Теперь давайте добавим в нашу страницу default.htm клиентскую поддержку контроля вводимых в форму данных. Нам нужно, чтобы при щелчке пользователя на кнопке Отправить вызвалась функция JavaScript, которая проверяла бы каждый текстовый блок на пустые значения. При наличии пустого значения должно появиться окно сообщения с указанием ввести правильные данные. Сначала обработайте событие onclick для кнопки Отправить.
‹input name="btnSubmit" type="Submit" value="Submit" id="btnSubmit" languaege="javascript" onclick = "return btnSubmit_onclick()"›
Этот обработчик события реализуйте так, как показано ниже.
function btnSubmit_onclick() {
// Если пользователь о чем-то забыл, отобразить сообщение.
if ((defaultPage.txtUserName.value == "") || (defaultPage.txtPassword.value == "")) {
alert("Следует указать имя пользователя и пароль!");
return false;
}
return true;
}
Теперь вы можете открыть свой любимый браузер, перейти к странице default.htm в виртуальном каталоге Cars и проверить работу вашего сценария клиента.
http://localhost/Cars/default.htm
Подача запроса формы (GET и POST)
Теперь, когда у вас есть простая HTML-страница, мы должны выяснить, как передать данные формы обратно Web-серверу для обработки. При построении HTML-формы в открывающем дескрипторе ‹form› обычно задается атрибут action, указывающий получателя вводимых в форму данных. Возможными получателями могут быть почтовые серверы, другие файлы HTML, файлы ASP (как "классические", так и .NET) и т.д. Для нашего примера мы используем "классический" файл ASP с именем ClassicAspPage.asp. Обновите свой файл default.htm, указав в нем следующие атрибуты в открывающем дескрипторе ‹form›.
‹form name="defaultPage" id="defaultPage" action="http://localhost/Cars/ClassicAspPage.asp" method= "GET"›
‹/form›
Добавленные атрибуты гарантируют, что при щелчке на кнопке Отправить данные формы будут отправлены файлу ClassicAspPage.asp с указанным URL. Указание method = "GET" для режима передачи означает, что данные формы присоединяются к строке запроса в виде набора пар имен и значений, разделенных символами амперсанда.
http://localhost/Cars/ClassicAspPage .asp?txtUserName=Andrew&txtPassword=abcd123$&btnSubmit=Submit
Другой метод передачи данных формы Web-серверу указывается с помощью method = "POST".
‹form name="defaultPage" id="defaultPage" action="http://localhost/Cars/ClassicAspPage.asp" method = "POST"›
‹/form›
В этом случае данные формы не присоединены к строке запроса, а записываются в отдельной строке в рамках HTTP-заголовка. При использовании POST данные формы будут невидимы для внешнего наблюдателя. Еще более важно то, что POST не имеет ограничений на длину символьных данных (многие браузеры выдвигают ограничения на длину запросов с использованием GET). Пока что для отправки данных формы странице-получателю *.asp мы будем использовать HTTP-метод GET.
Читать дальше