漫漫技术人生路

C#

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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文件,就应当用相应的方法接收查询数据,不然,你老是被报告查询参数为空,我就遇到过许多次^_^

posted on 2006-09-30 08:44  javaca88  阅读(309)  评论(0编辑  收藏  举报