网页脚本中值类型的测试
摘 要: |
随着电脑的普及及网络技术发展,人们发现,现在越来越离不开电脑,离不开网络了。有什么问题解决不了,有什么信息你不知道,好,到网上搜索,你会发现外面的世界如此丰富多彩。是否有冲动建立自己的站点呢?注意,别忘了利用数据库技术,它使你的页面更精彩。学学HTML、ASP等,看看SQL2000,摸摸VBScript,我们开始上路啦。问题很多,慢慢来,这里谈谈网页脚本中值的类型。 |
关键词: |
网页制作;ASP;VBScript;值类型 |
在动态网页设计中,常常要编写脚本,常用的有VbScript和JavaScript等,一般客户端默认采用JavaScript,服务器端默认是VbScript。因为VbScript是ASP动态网页设计的默认脚本,所以本文以VbScript为例来谈一下值的类型及测试。
在编写网页时,由于爱好,常工作于代码状态下。经常要和一些变量或取得的值打交道,常有些问题该用时忘了具体细节,临时还得进行验证测试,很不方便,本文以详尽的例子向大家说明了这些问题。
一、值类型
在VbScript中,变量只有一种类型,那就是Variant。Variant变量能够存储所有类型的数据。一个变量中究竟存储的是什么类型的数据,可用函数VarType返回,该函数返回一个整数,代表变量值的类型,表1列出了该函数的返回值。
表1 VarType函数返回值
常数 | 值 | 描述 |
vbEmpty | 0 | Empty(未初始化) |
vbNull | 1 | Null(无有效数据) |
vbInteger | 2 | 整数 |
vbLong | 3 | 长整数 |
vbSingle | 4 | 单精度浮点数 |
vbDouble | 5 | 双精度浮点数 |
vbCurrency | 6 | 货币 |
vbDate | 7 | 日期 |
vbString | 8 | 字符串 |
vbObject | 9 | Automation 对象 |
vbError | 10 | 错误 |
vbBoolean | 11 | Boolean |
vbVariant | 12 | Variant(只和变量数组一起使用) |
vbDataObject | 13 | 数据访问对象 |
vbByte | 17 | 字节 |
vbArray | 8192 | 数组 |
下面的ASP代码简单测试了Vartype函数。
<%
dim a
response.write "dim a 后 vartype(a)=" & vartype(a) & "<br>"
a=2
response.write "a=2 后 vartype(a)=" & vartype(a) & "<br>"
a="2"
response.write "a=""2"" 后 vartype(a)=" & vartype(a) & "<br>"
a=empty
response.write "a=empty 后 vartype(a)=" & vartype(a) & "<br>"
%>
执行后的结果是:
dim a 后 vartype(a)=0
a=2 后 vartype(a)=2
a="2" 后 vartype(a)=8
a=empty 后 vartype(a)=0
下面对一些特殊的返回值进行说明
1、Empty值
Empty值用来标记尚未初始化的Variant变量。当一个Variant变量包含Empty值时,仍可在表达式中使用它,此时根据表达式的上下文情况将其作为0或零长度字符串来处理。另外,也可用IsEmpty函数测试Empty值。如下面的ASP代码段:
<%
dim a
if a=0 then response.write "a=0<br>"
if a="" then response.write "a=""""<br>"
if a=false then response.write "a=false<br>"
if a=#0:0# then response.write "a=#0:0#<br>"
if isempty(a) then response.write "isempty(a)<br>"
%>
执行结果是:
a=0
a=""
a=false
a=#0:0#
isempty(a)
2、Null值
Null值通常用于数据库应用程序,表示未知数据或丢失的数据。可用IsNull函数测试是否包含Null值,我们也可将Null值赋值给变量。
一般说来,对包含Null的表达式,其计算结果总是Null。但需要注意的是运算符“&”,它用来强制两个表达式作字符串连接。如果两个表达式都是Null,则结果也是Null。但是,若只有一个表达式是Null,那么在与其它表达式连接时,都将其作为长度为零的字符串处理。
Null与Empty是不同的,请分析下面的ASP测试程序:
<%
dim a
a=null
if a=0 then response.write "a=0<br>"
if a="" then response.write "a=""""<br>"
if a=false then response.write "a=false<br>"
if isempty(a) then response.write "isempty(a)<br>"
if isnull(a) then response.write "isnull(a)<br>"
if a=null then response.write "a=null<br>"
if a<>null then response.write "a<>null<br>"
a=a+6
if isnull(a) then response.write "after a=a+6, a is null still.<br>"
a=a & 6
if not isnull(a) then response.write "after a=a&6, a is not null.<br>"
%>
执行结果如下:
isnull(a)
after a=a+6, a is null still.
after a=a&6, a is not null.
二、不同取值方法的值类型测试
1、获取Application对象存储的数据
Application对象内的数据能被该应用程序的所有用户共享,可用来存储和读取共享的应用程序信息。下面是测试的ASP程序:
<%
application("a")=6
response.write "application(""a"")=6 后类型值="&varitype(application("a"))&"<br>"
application("a")="6"
response.write "application(""a"")=""6""后类型值="&varitype(application("a"))&"<br>"
response.write "application(""b"")没赋值 类型值="&varitype(application("b"))&"<br>"
%>
执行结果如下:
application("a")=6 后类型值 = 2
application("a")="6" 后类型值 = 8
application("b")没赋值 类型值 = 0
2、获取Session对象存储的数据
Session对象用于在页面间跳转时保存和传递数据,和Application对象不同的是,Session对象只保存单个用户信息。下面是测试的ASP程序:
<%
session("a")=123
session("b")="123"
response.write vartype(session("a")) & " "
response.write vartype(session("b")) & " "
response.write vartype(session("c")) & " "
%>
显示结果是:
2 8 0
3、获取Cookies集合的值
Cookies按生存周期可分为会话Cookies和永久Cookies。虽然可给Cookies赋予不同的值类型,但取得Cookies值时类型只有一个,那就是字符串。请分析下面的代码:
<%
response.cookies("a")=123
response.cookies("b")=now
response.write vartype(request.cookies("a")) & " "
response.write vartype(request.cookies("b")) & " "
response.write vartype(request.cookies("c")) & " "
%>
显示结果是:
8 8 8
4、用QueryString方法获取表单数据
当使用GET方法提交表单数据时,数据作为URL地址的查询字符串字段参数传递给服务器,若字段存在,返回字符串,若不存在,返回Empty。
将下面的代码保存到test.asp文件中,然后用http://localhost/test.asp?a=123&b="123"进行测试,代码如下:
<%
a=request.querystring("a")
b=request.querystring("b")
c=request.querystring("c")
response.write vartype(a) & " "
response.write vartype(b) & " "
response.write vartype(c) & " "
%>
执行结果是:
8 8 0
5、使用Form方法获取表单数据
当使用POST方法提交表单数据时,在服务器端可用Form方法获取数据。
下面是表单网页的代码:
<form method="POST" action="qa.asp">
<p>姓名:<input type="text" name="a" size="20"></p>
<p><input type="submit" value="提交"></p>
</form>
下面是处理表单数据的代码:
<%
a=request.form("a")
b=request.form("b")
response.write vartype(a) & " "
response.write vartype(b) & " "
%>
执行结果是:
8 0
6、从数据库中获取数据
一个真正的、完整的站点是离不开数据库的。下面是SQL2000数据库的使用例子。
数据库的名字是test,ueses是该库中的一个表,其各字段的定义如图1所示。
图1 users表结构
图2 users表中的数据
下面的代码完成数据库的连接,然后查询users表中的数据并将其显示在表格中。
<%
dim conn, rs, cs
set conn=server.CreateObject("ADODB.Connection")
set rs=server.createobject("adodb.Recordset")
cs="Provider=SQLOLEDB.1;server=(local);database=test;uid=xx;pwd=xxxxx;"
conn.Open cs
rs.open "select 姓名,口令,昵称,身高,出生 from users where id=4", conn
%>
<table border="1" width="300" id="table1">
<tr><td>字段</td><td>字段值</td><td>值类型</td></tr>
<tr><td>姓名<td><%=rs("姓名")%><td><%=vartype(rs("姓名"))%></tr>
<tr><td>口令<td><%=rs("口令")%><td><%=vartype(rs("口令"))%></tr>
<tr><td>昵称<td><%=rs("昵称")%><td><%=vartype(rs("昵称"))%></tr>
<tr><td>身高<td><%=rs("身高")%><td><%=vartype(rs("身高"))%></tr>
<tr><td>出生<td><%=rs("出生")%><td><%=vartype(rs("出生"))%></tr>
</table>
<%
rs.close
conn.close
%>
下面表2是代码执行的结果:
表2 数据库查询结果
字段 | 字段值 | 值类型 |
姓名 | 仝婷 | 8 |
口令 | 1 | |
昵称 | 8 | |
身高 | 180 | 2 |
出生 | 1986-1-6 | 7 |
上面已经用代码详尽描述了数据的类型及检测的方法,利用这些,我们能更好地组织我们的程序,使代码更严谨,更规范,避免一些错误的发生。希望本文的描述,对你能有所帮助。由于本人水平有限,有不到的地方还请大家批评指正,本人深表感谢!