设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

查看: 5003|回复: 11

[原创] Javascript编写Asp时需要注意的一些地方 [复制链接]

超级版主

新手上路

Rank: 8Rank: 8

注册时间
2004-5-22
威望
3336
阅读权限
150
积分
6241
帖子
3329
精华
3
UID
11749
状态
当前离线
发表于 2007-4-11 13:26:40 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 查看个人网站
一键分享 一键分享
论坛里面有不少人在使用Javascript编写Asp,经常有人在论坛提问,为什么Asp对象在对比指定值时返回结果不对?现在在这里给大家写点关于使用Javascript编写Asp一些需要注意的地方。
最常见的问题:[php]Response.Write(Request.Form("Key") == "")[/php]返回的结果怎么都是"False"。在这里,我们使用typeof就可以发现:Request.Form("Key")返回的其实是一个object类型对象,而不是最终的值。所以,我们需要取出最终的值才能够做出正确的判断。可以使用如下解决方法:[php]var Nothing;        // 兼容不存在undefined的老版本jscript
Response.Write(Request.Form("Key").Item == Nothing);
Response.Write(Request.Form("Key").Item === Nothing);
// IE 5.5 之后undefined已经是一个常量,可直接访问(JScript版本是跟随IE升级的)
Response.Write(Request.Form("Key").Item == undefined);
Response.Write(Request.Form("Key").Item === undefined);
Response.Write(Request.Form("Key").Item == null);[/php]所以,取值时我们如果使用完整的取值方式,就不会出现那些奇怪的现象。

下面说一些Asp中取值的例子:
例:Request.Form("Key")
取值:Request.Form.Item("Key").Item
或:Request.Form("Key").Item
注意这里的Request.Form.Item,直接当属性访问时返回的是一个字符串对象(值类型),作为一个js的“function”使用时返回的是一个object。
Request.Cookies、Request.QueryString、Request.ServerVariables的取值写法同上。
vbs中的简写Request("Key")在javascript中,对应的是Request.Item("Key")
例:rs("FiledName")
取值:rs.Fields.Item("FiledName").Value
或:rs.Fields("FiledName").Value
或:rs("FiledName").Value
下面说一下Session和Application。
我们常用的Session("Key"),返回的已经是最终值了,所以这个方法可以放心使用。顺便也提一下,Session的完整写法应该是:
Session.Contents.Item("Key")
也可以写成
Session.Contents("Key")
Contents对象好像有点多余,其实并非如此,某些时候我们还是需要用到它的,主要是用于Session的枚举和Session的Remove操作。如:[php]Session.Contents.Remove("Key");
Session.Contents.RemoveAll()[/php]Abandon方法不属于Contents,它是直接属于Session的一个方法,使用时需要注意这个。
Application同样也存在Contents对象,用法和Session相同。

下面说一下Js枚举Asp对象。
我们有时可能想知道,客户端到底提交了一些什么数据?Application或Session中存在一些什么数据?
在js中,我们通常使用for...in方式获取一个对象的所有属性,但是,在Asp中,这个方式对于Asp对象就无能为力了。怎么办呢?这个时候,我们可以使用枚举(Enumerator)和VBArray来获取:[php]var app = new Enumerator(Application.Contents);
var arr = new Array;
while(!app.atEnd())
{
    var value = Application.Contents.Item(app.item());
    if(typeof value == "unknown") value = (new VBArray(value)).toArray() + " (VBArray)";
    else value += " (" + typeof value + ")";
    arr.push(app.item() + " : " + value);
    app.moveNext();
}
Response.Write(arr.join("<br>"));[/php]就写这些了,希望对刚刚开始学使用js编写asp的朋友们有些帮助。

[ 本帖最后由 Rimifon 于 2007-4-11 14:18 编辑 ]
風雲工作室
=========
广告位招租(做在老百姓眼皮底下的广告)

超级版主

新手上路

Rank: 8Rank: 8

注册时间
2004-5-22
威望
3336
阅读权限
150
积分
6241
帖子
3329
精华
3
UID
11749
状态
当前离线
发表于 2007-4-11 13:35:09 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 查看个人网站

下面发一个简单的在线调试服务端js代码的asp源码

:lol [php]<%@language="javascript" codepage="936"%><html><head>
<title>Asp Test</title>
</head><body scroll="auto">
<%if (Request.ServerVariables("REQUEST_METHOD").Item == "POST")
{
        var svrInfo = "代码执行成功";
        try
        {
                eval(Request.Form("Code").Item);
        }
        catch(err)
        {
                svrInfo = err.message;
        }
        Response.Write("<div>" + svrInfo + "</div>");
}
else
{%><table width="100%" height="100%" style="table-layout:fixed">
<form method="post" target="RunCode">
<tr><td height="45%">
<textarea rows="15" name="Code" style="width:100%;height:100%"></textarea>
</td></tr>
<tr><td align="center" height="30"><input type="submit" />
</td></tr></form>
<tr><td>
<iframe frameborder="0" width="100%" height="100%" name="RunCode"></iframe>
</td></tr></table>
<%}%></body></html>[/php]

[ 本帖最后由 Rimifon 于 2007-4-11 13:47 编辑 ]
風雲工作室
=========
广告位招租(做在老百姓眼皮底下的广告)

使用道具 举报

Rank: 2

升级  56.67%

注册时间
2007-3-13
威望
63
阅读权限
20
积分
135
帖子
73
精华
0
UID
66276
状态
当前离线
发表于 2008-3-25 16:54:46 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
:lol  强人,学习

使用道具 举报

Rank: 1

升级  22%

注册时间
2008-4-11
威望
4
阅读权限
10
积分
11
帖子
3
精华
0
UID
85247
状态
当前离线
发表于 2008-4-18 00:46:15 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
今天写代码的时候,打算将一个数组存到Application中,但是报错。而VBS则没问题。
只好将数组toString()之后再存到Application中
取的时候,再split一下

使用道具 举报

Rank: 6Rank: 6

升级  20.85%

注册时间
2005-7-7
威望
743
阅读权限
70
积分
1417
帖子
732
精华
0
UID
32377
状态
当前离线
发表于 2008-4-18 13:07:06 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ
顶一下,,,高手啊
平生多磨砺,男儿自横行
免费电影:中天丽影
继续努力

使用道具 举报

Rank: 6Rank: 6

升级  20.85%

注册时间
2005-7-7
威望
743
阅读权限
70
积分
1417
帖子
732
精华
0
UID
32377
状态
当前离线
发表于 2008-4-18 13:10:28 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ
Rimifon老大,问一个问题,,,我的网站的登录用的cookie,我想用JS判断ASP的cookie,应该怎么写呢?
平生多磨砺,男儿自横行
免费电影:中天丽影
继续努力

使用道具 举报

Rank: 3Rank: 3

升级  50.67%

注册时间
2006-12-28
威望
148
阅读权限
30
积分
352
帖子
147
精华
0
UID
63223
状态
当前离线
发表于 2008-4-18 21:13:26 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
学习了
在尝试用js编写asp

使用道具 举报

Rank: 4

升级  35.8%

注册时间
2006-11-21
威望
291
阅读权限
50
积分
679
帖子
352
精华
0
UID
59985
状态
当前离线
发表于 2008-4-20 13:20:50 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ ICQ 查看个人网站
厉害  学习加收藏了

使用道具 举报

Rank: 3Rank: 3

升级  70%

注册时间
2005-3-17
威望
219
阅读权限
30
积分
410
帖子
226
精华
0
UID
25319
状态
当前离线
发表于 2008-4-23 13:29:33 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ
好文章:loveliness:

使用道具 举报

Rank: 3Rank: 3

升级  3.67%

注册时间
2007-11-7
威望
98
阅读权限
30
积分
211
帖子
106
精华
0
UID
78463
状态
当前离线
发表于 2008-5-21 10:17:22 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ
:lol 很好,给了我很大的启发,谢谢!

使用道具 举报

Rank: 1

升级  50%

注册时间
2008-5-9
威望
5
阅读权限
10
积分
25
帖子
5
精华
0
UID
86673
状态
当前离线
发表于 2008-5-23 13:38:42 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料
收藏起来好好学习下!!!

使用道具 举报

Rank: 2

升级  40%

注册时间
2004-6-5
威望
62
阅读权限
20
积分
110
帖子
62
精华
0
UID
12478
状态
当前离线
发表于 2008-6-11 10:17:30 |显示全部楼层 |串个门|加好友|打招呼|发消息 |
查看详细资料 QQ 查看个人网站

冒试不是用item吧

据老外一asp javascript教程中可以了解到. 大家都不是用 Request.Form.Item, 而是用 new String(Request.Form("xx")) 详见 http://aspjavascript.com/lesson08.asp  (英文的哦)

使用道具 举报

您需要登录后才可以回帖 登录 | 加入无忧

Archiver|手机版|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445  

GMT+8, 2012-2-7 21:38 , Processed in 0.059103 second(s), 14 queries , Gzip On, Memcache On.

Powered by Discuz! X2

© 1999-2011 无忧脚本

回顶部