在ASP中,一般人都喜愛直接使用Request(“參數(shù)”)來獲得從上一個頁面?zhèn)鱽淼膮?shù),但是這樣很容易產(chǎn)生混亂,導致數(shù)據(jù)不正確。
比如,如果上一個頁面(A.ASP)中有一個文本框<Input name="xxx" value="1900">,并且你使用"B.ASP?xxx=1999"來調(diào)用第二個頁面(B.ASP)的話,那么你在B.ASP中使用Request("xxx")得到的參數(shù)xxx的值將是"1999",而不會是你想要得到"1900";若想要得到URL后面的那個xxx的值,應當使用Request.QueryString("xxx");若想要得到A.ASP中的那個xxx的值,應當使用
Request.Form("xxx"),并且那個文本框要在一個Form里面才可以。
但是,有的時候,使用Request("參數(shù)")反而會有很好的效果,不相信?那就一同來看看下面這個例子吧。
比如,我們要做一個關(guān)于查找記錄的搜索引擎,那就至少要有兩個頁面:
接受查詢條件的頁面(A.ASP)和顯示查詢結(jié)果的頁面(B.ASP),并且由于查詢到的數(shù)據(jù)會有很多,我們需要在B.ASP對查找到的記錄進行分頁顯示,即:
查詢參數(shù)------->分頁顯示(刷新自己)<--|
|___________________|
在A.asp中有一個文本框<Input type=text name="year">,是用來讓用戶輸入查詢條件的,B.asp要按照傳遞來的參數(shù)year來顯示屬于那一年的所有記錄。按照我們剛才講到的那種方法,代碼分別如下:
A.asp:
<html>
<body>
<form name="search" method="post" action="B.asp">
<Input type=text name="year">
<Input type=submit name="ok" value="查詢">
</form>
</body>
</html>
B.asp :
<%
year=Request.Form("year")
%>
<html>
<body>
。。。。。。
<A href="B.asp?page=<%=page%>&year=<% year%>">下頁</A>
。。。。。。
</body>
</html>
自然,第一次提交到B.asp的時候,可以使用Request.Form("year")得到那個條件year,但是B.asp要分頁,也就是說他要刷新自己,以便顯示全部的記錄,但是因為B.asp中并沒有這個文本框year,所以使用Request.Form("year")得到的將會是一個空值,這時候就是Request("year")顯示威力的時候了,可以這樣修改B.asp :
<html>
<body>
。。。。。。
<A href="B.asp?page=<%=page%>&year=<%request("year")%>">下頁</A>
。。。。。。
</body>
</html>
這樣,當?shù)谝淮握{(diào)用B.asp的時候,獲得的是A.asp中那個文本框中的值(用戶輸入的);翻頁的時候調(diào)用B.asp獲得的是“B.asp?...&year=???”里面的值,也就是URL中的值。