网页脚本中值类型的测试

摘  要:

随着电脑的普及及网络技术发展,人们发现,现在越来越离不开电脑,离不开网络了。有什么问题解决不了,有什么信息你不知道,好,到网上搜索,你会发现外面的世界如此丰富多彩。是否有冲动建立自己的站点呢?注意,别忘了利用数据库技术,它使你的页面更精彩。学学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

 

上面已经用代码详尽描述了数据的类型及检测的方法,利用这些,我们能更好地组织我们的程序,使代码更严谨,更规范,避免一些错误的发生。希望本文的描述,对你能有所帮助。由于本人水平有限,有不到的地方还请大家批评指正,本人深表感谢!

posted @ 2006-02-22 10:34  crane  阅读(223)  评论(0编辑  收藏  举报