ASP與Form一起工作

來源:互聯網
上載者:User

ASP與Form一起工作

上次我們說ASP的目的是讓頁面與使用者互動,那麼,怎樣得到使用者的資訊呢?當然是用Form,不論是CGI,IDC,JAVA,還是其他的什麼技術,都是通過嵌在WWW頁面中的Form來讓瀏覽器的使用者輸入資訊,然後,Form的提交動作,把資料傳給了伺服器,伺服器再把資料傳給CGI或是其他的什麼程式.既然Form如此重要,那麼這次就讓我們來看一看在ASP中,怎樣子獲得使用者在Form中輸入的資料,同時,我們還將學到ASP是怎樣將結果返回到WWW頁面的.

首先,我們建立一個Form,他的HTML代碼如下:

 

<HTML>

<HEAD><TITLE>定單</TITLE></HEAD>

<BODY>

<H2>定單Form例子</H2>

<P>

請向我們提供以下資訊,然後單擊"提交":

<FORM METHOD="POST" ACTION="response.asp">

<P>

姓: <INPUT NAME="fname" SIZE="48">

<P>

名: <INPUT NAME="lname" SIZE="48">

<P>

稱呼: <INPUT NAME="title" TYPE=RADIO VALUE="先生">先生

<INPUT NAME="title" TYPE=RADIO VALUE="女士">女士

<P><INPUT TYPE=SUBMIT VALUE="提交"><INPUT TYPE=RESET VALUE="清除">

</FORM>

</BODY>

</HTML>

這個表單是一個簡單的定單例子,它接收客戶的姓名,稱呼,然後用POST方法將資料提交.我們知道,表單(Form)提交資料常有兩種方法,一種是GET,一種是POST,對於GET提交的資料,WWW伺服器將把資料放在環境變數QUERY_STRING中,對於POST方法,資料被送到WWW伺服器的STDOUT中,然後CGI從自己的STDIN中讀取.傳統的CGI方法必須自己處理這些資料.可是在ASP中,採用了物件導向的思想,所有從瀏覽器來的資料都被封裝進了對象Request中.Request有方法Form和Querystring,分別返回用POST方法和GET方法提交的資料.我們要得到表單提交的資料,只需用

Request.Form("表單網域名稱") 或

Request.Querystring("查詢參數名")

就可以了.

好了,接下來就讓我們建立.asp檔案Response.asp來處理上面的表單提交的資料吧,這裡,我們只是簡單的將使用者提交的資料返回給使用者.

<HTML>

<HEAD></HEAD>

<BODY>

<%

Title = Request.Form("title")

LastName = Request.Form("lname")

If Title = "先生" Then

%>

 

<%= LastName %>先生

<% ElseIf Title = "女士" Then %>

<%= LastName %>女士

<% Else %>

<%= Request.Form("fname") & " " & LastName %>

<% End If %>

</BODY>

</HTML>

恩,上面這段代碼有些難懂吧,不要怕,一會兒之後,你就會說,好簡單啊.那,我們來分析一下它吧.首先,他的開頭和結尾都和普通的HTML代碼沒有什麼兩樣,關鍵是中間.如果略去定界符<%和%>,然後將前面沒有東西的等號換成 Print ,它就變成了:

Title=Request.Form("title")

LastName=Request.Form("lname")

If Title="先生" Then

print LastName 先生

ElseIf Title="女士" Then

print LastName 女士

Else

print Request.Form("fname")&" "& LastName

End If

這是不是VB?很簡單吧?

有一點說明的是,.asp檔案中,不在定界符之內的字元,當成普通的HTML解釋.如上面的"先生","女士".ASP自己的輸出用一個等號加上對象名來實現(當然,ASP的代碼在定界符之內).如上面的<%=LastName%>.其實,在.asp檔案中,任何對象要作用到定界符之外就要用這種形式:<%=對象名%>.

至於IF..THEN判斷分支,就不用我解釋了吧:)

上面我們用<%=對象名%>來實現ASP向頁面的資料輸出,使得.asp檔案看起來比較接近HTML檔案,下面我們用另一種方法來實現:

 

<HTML>

<HEAD></HEAD>

<BODY>

<%

Title = Request.Form("title")

LastName = Request.Form("lname")

If Title = "先生" Then

Response.Write LastName & "先生"

ElseIf Title = "女士" Then

Response.Write LastName & "女士"

Else

Response.Write Request.Form("fname") & " " & LastName

End If %>

</BODY>

</HTML>

除了開頭和結尾,這看起來是不是更像一個VB程式?對了,我們用了另一個ASP內建對象Response的Write方法來輸出資料.

到底用哪一種方法,那要看你的喜歡了,不過,要是有許多格式控制指令,都當成串用Write來輸出,確實很麻煩的.我偏愛第一種方法:)

上面我們學了用ASP處理用POST方法提交的資料,那麼,對於用GET方法提交的資料,又怎樣處理呢?其實,處理都是一樣的,只不過取得表單資料的方法不同罷了,比如我們要取得"title"的值,就用:

Request.Querystring("title")

對於如下方法調用.asp檔案,也要用這種方法處理:

<a href="response.asp?title=先生&fname=張&lname=三">xxxxx</a>

(其實,表單的GET方法最後也被轉換成了這種形式.)

大家一定要注意,用什麼方法調用的.asp檔案,就應當用相應的方法接收查詢資料,不然,你老是被報告查詢參數為空白,我就遇到過許多次^_^

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.