[心缘地方]同学录
首页 | 功能说明 | 站长通知 | 最近更新 | 编码查看转换 | 代码下载 | 常见问题及讨论 | 《深入解析ASP核心技术》 | 王小鸭自动发工资条VBA版
登录系统:用户名: 密码: 如果要讨论问题,请先注册。

[ASP]俺写的ASP超简略教程---第二节:使用Request对象接收变量

上一篇:[ASP]俺写的ASP超简略教程---第一节:ASP及VBscript简介
下一篇:[ASP]俺写的ASP超简略教程---第三节:DB操作

添加日期:2007-6-26 23:53:36 快速返回   返回列表 阅读3478次
Asp主要提供了7个内置的对象:
-------------------------------
Request        接收用户输入及环境变量
Response     输出内容给用户
Server         提供一些实用的方法
Session     提供操作Session的方法
Application     提供操作Application 的方法
Error         错误处理(用的不是很多)
ObjectContext     事务处理的功能,不常用


Request对象

1。访问ASP网页的方式:Get和Post方式

Get:
--------------------------
用户直接在地址栏输入URL。
点击网页中的连接
javascript的网页跳转
表单的Get方式提交

Post:
---------------------------
表单的Post方式提交


2。Get方式下,如何取得用户输入

(1)使用Request.QueryString("名称")来取得。

如:访问URL为test.asp?n=3&name=哈哈&n=5&d=2005/6/1
其中的?之后,称为QueryString。

Response.Write Request.QueryString("n") &"<br>"
Response.Write Request.QueryString("name") &"<br>"
Response.Write Request.QueryString("d") &"<br>"
-----------------
输出为:
3, 5 (注意,分隔符是逗号和一个空格)
哈哈
2005/6/1
-----------------
也就是说,相同的项目的值会合并在一起,用逗号+空格分隔。

注意,Request.QueryString("名称")返回的都是字符串类型,

进行判断或运算之前应该显示的转换一下类型,也就是使用Cint,CLng,CDate等函数。

(2)实际上每个Request.QueryString("名称")都是一个集合类型,都有.Count属性.

Response.Write Request.QueryString("n").Count &"<br>"
Response.Write Request.QueryString("name").Count &"<br>"
Response.Write Request.QueryString("d").Count &"<br>"
输出:
2
1
1

(3)可以用(n)的方式输出每个项目的每一个值。注意,下标从1开始。
Response.Write Request.QueryString("n")(1) &"<br>"
Response.Write Request.QueryString("n")(2) &"<br>"
Response.Write Request.QueryString("name")(1) &"<br>"
Response.Write Request.QueryString("d")(1) &"<br>"
输出:
3
5
哈哈
2005/6/1

(4)更多的情况下,每个项目中的值的个数是不定的。可以用循环来输出。

for i=1 to Request.QueryString("n").Count
    Response.Write Request.QueryString("n")(i) &"<br>"
next
---------------------
而对于整个Request.QueryString来说,可以这样:
for i=1 to Request.QueryString.Count
    Response.Write Request.QueryString(i) &"<br>"
next
------------------------------
for each x in Request.QueryString
    Response.Write Request.QueryString(x) &"<br>"
next
其中的x只是一个变量名字而已,可以随便改个名字。
------------------------------------
输出都为:
3, 5
哈哈
2005/6/1


3。Post方式下,如何取得用户输入

(1)使用Request.Form("名称")来取得。其他的特点与以上的(2)(3)(4)点相同。

如下,是一个表单。

<form action="test.asp" method="post">
姓名:<input type="text" Name="name"><br>
性别:男<input type="Radio" Name="sex" value="男" checked>
女<input type="Radio" Name="sex" value="女"><br>
爱好:<input type="checkbox" name="fav" value="篮球">篮球  
<input type="checkbox" name="fav" value="足球">足球 
<input type="checkbox" name="fav" value="游泳">游泳<br>
<input type="Submit" value="提交">
<input type="Reset" value="重写">
</form>


注意,每个项目的name属性,提交时,是以name=value的形式提交的

如:name=张三&sex=男&fav=篮球&fav=足球

可以看到,形式上与Get方式提交是类似的。

Response.Write Request.Form("name") &"<br>"
Response.Write Request.Form("sex")&"<br>"
Response.Write Request.Form("fav") &"<br>"

输出:
张三

篮球, 足球

(2)各种表单项目的一点区别

对于文本框,密码框,textarea等,输入什么就提交什么。

单选框和复选框,选中哪个就提交那个,不选中的不提交

下拉框也一样…………

submit按钮的value也会提交。

button和reset的value不会提交。

(3)表单状态的维持

当表单与处理页面是同一个页面时,通常要保持表单的状态与提交前一致。(如搜索界面)

(asp.net中因为用了控件,已经自动作到了这一点,而ASP中需要自己来做。)

略显繁琐,但也不难。
----------------------------------------------
<%
name=Trim(Request.Form("name"))  '接收值记得一定要Trim一下,能减少不必要的麻烦
sex= Trim(Request.Form("sex"))
fav= Trim(Request.Form("fav"))

%>
<form action="test.asp" method="post">
姓名:<input type="text" Name="name" value="<%=name%>"><br>
性别:男<input type="Radio" Name="sex" value="男" <% if sex="男" then %> checked <% end if%>>
女<input type="Radio" Name="sex" value="女" <% if sex="女" then %> checked <% end if%>><br>
爱好:<input type="checkbox" name="fav" value="篮球" <% if Instr(fav,"篮球")>0 then %> checked<% end if%>>篮球  
<input type="checkbox" name="fav" value="足球" <% if Instr(fav,"足球")>0 then %> checked <% end if%>>足球 
<input type="checkbox" name="fav" value="游泳" <% if Instr(fav,"游泳")>0 then %> checked <% end if%>>游泳<br>
<input type="Submit" value="提交">
<input type="Reset" value="重写">
</form>

对于单选框、复选框等,这样混杂的写法有些费事,而且看起来不爽。

建议交给客户端javascript来做。

留给你们做练习吧…………

提示:将asp中变量值传给javascript的方法。
<script>
var sex="<%=sex%>";
</script>


今天作业:
(1)完成上面的javascript。

(2)设计一个添加书籍资料的表单,并写一个接收页面,输出表单中输入的内容。
表单页:addBook.asp
接收页:addBookSave.asp

表单项目:
文字        name        maxlength
-------------------------------------------------------
名称        book_name        100
作者        book_author        50
译者        book_translator        50
出版社        book_publisher        50
出版时间    book_publishDate    10
页数        book_pageNumber        10
ISBN        book_ISBN        20
内容介绍    book_Content        textarea

<1>要求客户端进行长度Check,出版时间进行日期check,页数进行数字check。

check方法可以自己搜索……

<2>点提交按钮后,提交按钮灰掉。

===========================================================================

点评补记:

表单提交、check与接收是十分常见的功能了…………
 
一定要熟练掌握,
 
熟练之后,此练习最多几个小时就可以搞定的。
--------------------------------------------------------------------------
再说一下注意事项:
 
(1)所有要提交的表单项目要放到<form></form>之间。
 
(2)注意form的method,理解Get和Post的区别。
 
(3)注意设定表单项目的Name属性
 
(4)调用客户端JS进行Check的时机,通常是onSubmit事件时调用。
 
(5)最好将常用的JS Check代码独立出来,需要时引用即可,从而可以快速开发。
 
(6)接收变量时,注意Request.Form和Request.QueryString的区别,该用哪个就用哪个。
 
………………

 

评论 COMMENTS
没有评论 No Comments.

添加评论 Add new comment.
昵称 Name:
评论内容 Comment:
验证码(不区分大小写)
Validation Code:
(not case sensitive)
看不清?点这里换一张!(Change it here!)
 
评论由管理员查看后才能显示。the comment will be showed after it is checked by admin.
CopyRight © 心缘地方 2005-2999. All Rights Reserved