|
1. Wysyłanie danych do użytkownika W tej części zostanie pokazane jak połączyć VBScript z HTML oraz jak umieścić rezultat wykonania kodu VBScript w dokumencie HTML wysłanym do przeglądarki (klienta). Posłużę się przykładem, który informuje o godzinie na serwerze oraz o ilości godzin w stosunku do dnia 01-01-2000. Przykład zawiera funkcje operujące na dacie i czasie. Przykład: Kod: asp
<% @LANGUAGE = VBScript %> Kiedy zostanie otwarty ten plik w przeglądarce, na stronie pojawi się napis podobny do poniższego.
Jeśli podejrzy się źródło, zostanie wyświetlony następujący kod: Kod: html4strict
<HTML> Teraz zostaną opisane poszczególne linie kodu. Pierwsza z nich to: Kod: asp
<% @LANGUAGE = VBScript %> Dyrektywa @LANGUAGE została użyta w celu określenia języka skryptu dla pliku ASP. Ta komenda musi znajdować się w pierwszej linii przed jakimikolwiek innymi blokami kodu. Dyrektywa @LANGUAGE informuje IIS o użytym języku w skrypcie. Jej użycie nie jest konieczne, lecz zalecane, gdyż w razie zmiany w ustawieniach IIS dotyczących użytego języka w plikach *.asp, np. z VBScript na JScript, wszystkie pliki które będą zawierały komendy VBScript, a nie będą posiadały tej dyrektywy zwrócą błędy w składni. Poniżej przedstawiona komenda VBScript nakazuje deklarację każdej użytej zmiennej z skrypcie, używając instrukcji Dim, Private, Public oraz ReDim.
Komenda powinna się znajdować tuż po linii zawierającej dyrektywę @LANGUAGE. Po jej wpisaniu należy deklarować wszystkie zmienne przed ich użyciem. Takie rozwiązanie jest bardzo pomocne, gdy w skrypcie użyje się błędnie wpisanej zmiennej ponieważ w wyniku otrzyma się błąd w postaci: Variable undefined, w momencie wywołania go spod przeglądarki. W takim przypadku będzie wiadomo, że jakaś nazwa zmiennej została wpisana niepoprawnie. Zaoszczędzi to wielu godzin szukania błędu. Jeśli się stwierdzi, że skrypt działa poprawnie można tą linię usunąć, lecz w trakcie tworzenia i modyfikowania skryptu jest ona niemal nieodzowna. Na przykład jeśli w programie użyta zostanie zmienna nazwa i w jakimś miejscu, przez zupełny przypadek, wpisana zostanie zamiast nazwa np. nawza, wtedy przy braku tej komendy program potraktuje zmienną nawza jako nową zmienną, sformatuje ją, czyli ustali jej wartość na 0 lub ciąg o zerowej długości, a na stronie nie pojawi się zamierzona informacja przechowywana w zmiennej nazwa. W czwartej linii znajduje się komenda Kod: asp
Response.Expires = 0 Informuje ona przeglądarkę po jakim czasie zawartość strony traci ważność. Wartość określana jest w minutach. W naszym przypadku wynosi ona zero. Jeśli jest potrzeba określenia daty upływu ważności należałoby wpisać na przykład następującą komendę: Kod: asp
Response.ExpiresAbsolute = #January 1, 2000 00:00:00# W przypadku obu komend muszą one znaleźć się przed całą zawartością dokumentu formatu HTML oraz komendami Response.Write (chyba, że użyto komendy Response.Buffer = TRUE, ale o tym za chwilę). W przeciwnym wypadku przeglądarka pokaże błąd w postaci: Response object error (Header error). Błąd jest związany z tym, iż komenda Response.Expires została wysłana do przeglądarki po wcześniejszym przesłaniu nagłówka HTTP. Instrukcja Kod: asp
Dim czasTeraz, czasZaGodzine, czasRoznica deklaruje użyte w skrypcie zmienne. Są one od siebie oddzielone przecinkiem. Kolenjne linie: Kod: asp
czasTeraz = Time określają wartości zadeklarowanych zmiennych. Pierwsza linia ustala wartość zmiennej czasTeraz na wartość aktualnej godziny serwera, druga ustawia wartość zmiennej czasZaGodzine na wartość zmiennej czasTeraz zwiększonej o jedną godzinę, zaś trzecia linia zapisuje do zmiennej czasRoznica wartość równą różnicy czasu aktualnego i daty 1/1/2000 określoną w godzinach. Jeśli bieżący czas jest przed datą 1/1/2000 to wartość czasRoznica jest dodatnia, zaś jeśli jest po tej dacie - zmienna przyjmuje wartość ujemną. Kod: asp
<% Respone.Write(tekst) %> lub inna równoważna, użyta w przykładzie Kod: asp
<% =tekst %> Linia 9, tj. %>, zamyka blok kodu VBScriptu. Linie 10-14 zawierają kod HTML z wartościami zmiennych czasTeraz, czasZaGodzine oraz czasRoznica. W liniach 16-25 została użyta instrukcja warunkowa If. Instrukcja Response.Write wysyła do przeglądarki tekst. Może on zawierać zmienne i łańcuchy. Łączenie tekstu ze zmiennymi odbywa się za pomocą znaku &. Jeśli chcemy wysłać sygnał przejścia do następnej linii należy dołączyć stałą VbCrLf, np. Kod: asp
Response.Write "Wartość=" & wartosc & ".<BR>" & VbCrLf Buforowanie Bufor jest magazynem, który przechowuje dane przez pewien czas. Użycie buforowania pozwala na umieszczenie komendy Response.Expires za kodem HTML lub instrukcją Response.Write. Przykład przedstawiający buforowanie: Kod: asp
<% @LANGUAGE = VBScript %> Kiedy zostanie uruchomiony powyższy kod na ekranie przeglądarki pojawi się napis:
Dodatkowo przeglądarka zostanie poinformowana, że zawartość strony straci natychmiast ważność. Kod: asp
Response.Buffer = TRUE sygnalizuje, że strona będzie buforowana na serwerze i nie zostanie wysłana odpowiedź do przeglądarki klienta dopóki wszystkie instrukcje z bieżącej strony ASP nie zostaną przesłane lub dopóki nie zostaną wywołane metody Flush lub End obiektu Response. Komenda Response.Buffer musi znajdować się przed kodem HTML lub instrukcją Response.Write. Linia zawierająca: Kod: asp
Response.Expires = 60 określa czas utraty ważności strony po 60 minutach. Takie rozwiązanie jest użyteczne w przypadku, gdy zawartość strony jest zmieniana co maksymalnie dwie godziny. Linie zawierające: są przechowywane w buforze (Response.Buffer = TRUE), ale nie zostaną nigdy wysłane do przeglądarki, ponieważ bufor jest czyszczony komendą: Kod: asp
Response.Clear Także w kolejnej linii, tj. Response.Expires=0, ustawione jest natychmiastowy upływ ważności strony. Kod: asp
Response.Flush Kolejne linie: Kod: html4strict
</BODY> zostają wysłane do przeglądarki i zamkną dokument HTML. Kod: asp
Response.End nakazuje serwerowi WWW zakończyć przetwarzanie skryptu i wysłać bieżący rezultat. Wszystkie linie znajdujące się pod tą komendą nie zostaną wykonane (nie zostaną przesłane do przeglądarki). Przekierowanie użytkownika do innej strony Przekierowanie użytkownika do innej strony można zastosować w przypadku:
W celu dokonania przekierowania należy wywołać metodę Redirect obiektu Response. Przykład: Kod: asp
Response.Redirect "/katalog/nowastrona.asp" lub równoważne Kod: asp
Response.Redirect("/katalog/nowastrona.asp") Uwaga! Żadne dane wyjściowe nie mogą znaleźć się przed metodą Redirect. Formatowanie ustawień regionalnych Postać daty w różnych standardach wygląda odmiennie, czy to dla użytkowników anglojęzycznych, czy niemieckich. Domyślne ustawienia regionalne serwera są odpowiedzialne za jej wygląd. Ustawienia te można zmieniać korzystając z właściwości LCID obiektu Session. Poniżej została przedstawiona tabela z wartościami dla różnych ustawień regionalnych.
2. Odbieranie danych od użytkownika Zmienne środowiskowe Czasem jest potrzeba uzyskania informacji na temat typu przeglądarki klienta, adresu IP, itp. W tym celu można posłużyć się grupą ServerVariables obiektu Request. Przykładem wykorzystania (odczytania) zmiennej środowiskowej jest poniższy zapis: Kod: asp
sciezkaURL = Request.ServerVariables("SCRIPT_NAME") W przykładzie do zmiennej sciezkaURL zostanie zapisana rzeczywista ścieżka wykonywanego skryptu.
Formularze a) Metoda GET Użycie metody GET sprawi, że wszystkie dane umieszczone w wypełnionym formularzu zostaną dołączone do adresu URL i będą odczytywalne od strony serwera poprzez użycie grupy Request.QueryString. Przykładowy adres po wysłaniu formularza, którego metodą jest GET, może wyglądać następująco:
Wartością zwróconą poprzez wywołanie komendy Request.QueryString("pole2") będzie wartosc2. b) Metoda POST W przeciwieństwie do metody GET, metoda POST nie dołącza danych z formularza do adresu URL. Dane od strony serwera są odczytywane przy pomocy zbioru Request.Form. Przykład odczytania zawartości pola tekstowego z formularza, który używa metody POST. Fragment dokumentu HTML: Kod: html4strict
<FORM ACTION="plik.asp" METHOD="POST"> Odczytanie pola z imieniem odbywa się poprzez wpisanie komendy: Kod: asp
Request.Form("imie") zaś odczytanie pola z nazwiskiem: Kod: asp
Request.Form("nazwisko") Podobnie dzieje się w przypadku metody GET, z tą różnicą, że zamiast Request.Form wpisać należy Request.QueryString. Przydatne funkcje:
Autor: Krzysztof Stelmach
Skomentuj
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||




