Otazník za názvem ASP stránky

22. prosince 2001

Znaky za názvem ASP stránky, které začínají otazníkem a jsou připojené na konec URL adresy na řádku prohlížeče jsou parametry s hodnotami, předávané z nějaké ASP nebo HTML stránky pomocí metody GET. Vysvětlím vám, jak pomocí metody GET odeslat požadavek ze stránky a následně zpracovat odpověď.

Celé ASP kouzlo se pochopitelně odehrává na serveru, který předávané parametry a hodnoty rozpozná prostřednictvím kolekce QueryString a umožní je v přijaté odpovědi zobrazit, nebo provést nějakou akci.

Jak z jedné stránky předat parametry druhé stránce

<a href=“samp_get.asp?jmeno=Josef&prijmeni=Novák“>Odkaz na stránku samp_get.asp s parametry</a>

Vložíte-li do stránky tento odkaz, budete jím volat stránku samp_get.asp, které předáte hodnoty pomocí dvou parametrů. První parametr je „jmeno“ a má hodnotu „Josef“, druhý je „prijmeni“ s hodnotou „Novák“. Chcete-li připojit parametr (řetězec argumentů) na konec ASP stránky, za otazník připojte nazev_parameru=hodnota, je-li jich více než jeden, použijte k pospojování znak & (ampersand), tedy:

samp_get.asp?jmeno=Josef&prijmeni=Novák

Jak se na parametry zeptat

Nyní si vytvořte stránku samp_get.asp. V jejím kódu se na oba parametry a jejich hodnoty „přeptáte“ – k tomu poslouží kolekce QueryString objektu Request. A protože předem znáte názvy parametrů, se kterými jste stránku samp_get.asp „zavolali“, můžete se v odpovědi na ně zeptat přímo:

<%
‚ zobrazí se dvě slova: Josef Novák
Response.Write Request.QueryString(„jmeno“) &“ „
Response.Write Request.QueryString(„prijmeni“)
%>

Kolekce QueryString objektu Request, kterou nyní používáte, má následující vlastnosti a přijaté hodnoty parametrů se zde nazývají prvky:

Key – představuje název určitého prvku v kolekci
Item – vrací hodnotu určitého prvku v kolekci
Count – vrací celkový počet prvků v kolekci

Předem víte, že vaše kolekce má dva prvky, jejichž název znáte, proto si je můžete vypsat:

<%
Response.Write („Název prvního prvku v kolekci je: “ &Request.QueryString.Key(1) &“<br>“)
Response.Write („Hodnota prvního prvku v kolekci je: “ &Request.QueryString.Item(„jmeno“) &“<br><br>“)
Response.Write („Název druhého prvku v kolekci je: “ &Request.QueryString.Key(2) &“<br>“)
Response.Write („Hodnota druhého prvku v kolekci je: “ &Request.QueryString.Item(„prijmeni“) &“<br><br>“)
‚ celkový počet prvků v kolekci
Response.Write („Celkový počet prvků v kolekci je: “ &Request.QueryString.Count &“<br>“)
%>

Jak projít QueryString dynamicky

Pokud projdete v odpovědi kolekcí QueryString dynamicky, zjistíte hodnoty všech prvků, aniž byste předem znali počet prvků, názvy a jejich hodnoty.

Do stránky s nějakým názvem, třeba priklad_get.htm (může to být samozřejmě i ASP stránka) vložte tyto HTML odkazy, které umožní volat jednu a tu samou ASP stránku, ale z odkazů s různými parametry:

<a href=“samp_get.asp?odkaz=První“>První odkaz</a><br>
<a href=“samp_get.asp?odkaz=Druhý&jmeno=Josef“>Druhý odkaz</a><br>
<a href=“samp_get.asp?odkaz=Třetí&jmeno=Josef&prijmeni=Novák“>Třetí odkaz</a><br>
<a href=“samp_get.asp?odkaz=Čtvrtý&prijmeni=Novák“>Čtvrtý odkaz</a><br>
<a href=“samp_get.asp“>Odkaz bez parametrů</a>

Tyto odkazy ¨vám umožní zavolat stránku samp_get.asp s uvedenými parametry, a v její odpovědi si vypíšete jen ty prvky v kolekci (číslování prvků začíná vždy číslem 1), které mají nějaký název a hodnotu (dynamicky, protože předem neznáte počet prvků v kolekci a musíte se na ně ptát až v odpovědi). V následujícím kódu (musí být umístěn ve stránce sampl_get.asp) si povšimněte, že pokud je kolekce prázdná, je část kódu v cyklu mezi příkazy For a Next zcela vynechána, naopak pokud má kolekce jeden nebo více prvků, pomocí proměnné intPol a její hodnoty (která se při průchodu kolekcí vždy zvýší o číslo 1) se na název a hodnotu příslušného prvku můžete zeptat a následně zobrazit. V cyklu mezi řádky For a Next se do řetězcové proměnné vysl připojuje jako řetězec název prvku a jeho hodnota tak, aby na konci kódu jako příklad mohl být zobrazen celý požadavek, původně odeslaný uživatelem ze stránky samp_get.htm s řetězcem parametrů, připojených za otazníkem:

<%
For Each item In Request.QueryString
intPol = intPol+1
nazev = Request.QueryString.Key(intPol)
hodnota = Request.QueryString.Item(nazev)
Response.Write („Hodnota prvku <b>“ &nazev &“</b> je : <b>“ &hodnota &“</b><br>“)
if intPol>1 then
vysl = vysl+“&“
End If
vysl = vysl + nazev + „=“ + hodnota
Next
if vysl<>““ Then
Response.Write („<br> Celý řetězec, předaný za otazníkem: <b>“ &vysl &“</b><br>“)
Else
Response.Write („<br><b>Na této ASP stránce nebyly zjištěny žádné prvky kolekce QueryString</b><br>“)
End If
%>

Odpověď do prohlížeče, zobrazená po zavolání „samp_get.asp?odkaz=Druhý&jmeno=Josef“ vypadá takto:
Hodnota prvku odkaz je : Druhý
Hodnota prvku jmeno je : Josef
Celý řetězec, předaný za otazníkem: odkaz=Druhý&jmeno=Josef

Vidíte sami, je to jednoduché. Pokud si určíte vlastní názvy parametů s hodnotami, kód vám ochotně zobrazí vše, co v kolekci nalezne.

Další článek Rozstrapatený text

Mohlo by vás také zajímat

Nejnovější

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *