标题: [原创] Javascript编写Asp时需要注意的一些地方
本帖已经被作者加入个人空间
Rimifon (无名)
超级版主
Rank: 8Rank: 8
新手上路


UID 11749
精华 3
积分 5448
帖子 3015
威望 2985
阅读权限 150
注册 2004-5-22
来自 湖南长沙
状态 离线
 
发表于 2007-4-11 13:26  资料  个人空间  主页 短消息  加为好友  添加 Rimifon 为MSN好友 通过MSN和 Rimifon 交谈
Javascript编写Asp时需要注意的一些地方

论坛里面有不少人在使用Javascript编写Asp,经常有人在论坛提问,为什么Asp对象在对比指定值时返回结果不对?现在在这里给大家写点关于使用Javascript编写Asp一些需要注意的地方。
最常见的问题:


Response.Write(Request.Form("Key") == ""


返回的结果怎么都是"False"。在这里,我们使用typeof就可以发现:Request.Form("Key")返回的其实是一个object类型对象,而不是最终的值。所以,我们需要取出最终的值才能够做出正确的判断。可以使用如下解决方法:


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); 


所以,取值时我们如果使用完整的取值方式,就不会出现那些奇怪的现象。

下面说一些Asp中取值的例子:

QUOTE:
例: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")

QUOTE:
例: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操作。如:


Session.Contents.Remove("Key");
Session.Contents.RemoveAll() 


Abandon方法不属于Contents,它是直接属于Session的一个方法,使用时需要注意这个。
Application同样也存在Contents对象,用法和Session相同。

下面说一下Js枚举Asp对象。
我们有时可能想知道,客户端到底提交了一些什么数据?Application或Session中存在一些什么数据?
在js中,我们通常使用for...in方式获取一个对象的所有属性,但是,在Asp中,这个方式对于Asp对象就无能为力了。怎么办呢?这个时候,我们可以使用枚举(Enumerator)和VBArray来获取:


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>")); 


就写这些了,希望对刚刚开始学使用js编写asp的朋友们有些帮助。

[[i] 本帖最后由 Rimifon 于 2007-4-11 14:18 编辑 [/i]]





風雲工作室
=========
广告位招租(做在老百姓眼皮底下的广告)
顶部
Rimifon (无名)
超级版主
Rank: 8Rank: 8
新手上路


UID 11749
精华 3
积分 5448
帖子 3015
威望 2985
阅读权限 150
注册 2004-5-22
来自 湖南长沙
状态 离线
 
发表于 2007-4-11 13:35  资料  个人空间  主页 短消息  加为好友  添加 Rimifon 为MSN好友 通过MSN和 Rimifon 交谈
下面发一个简单的在线调试服务端js代码的asp源码




<%@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


[[i] 本帖最后由 Rimifon 于 2007-4-11 13:47 编辑 [/i]]





風雲工作室
=========
广告位招租(做在老百姓眼皮底下的广告)
顶部
sysoft
爬虫
Rank: 2



UID 66276
精华 0
积分 130
帖子 72
威望 63
阅读权限 20
注册 2007-3-13
状态 离线
 
发表于 2008-3-25 16:54  资料  个人空间  短消息  加为好友  添加 sysoft 为MSN好友 通过MSN和 sysoft 交谈
  强人,学习

顶部
lorui
小虫
Rank: 1



UID 85247
精华 0
积分 11
帖子 3
威望 4
阅读权限 10
注册 2008-4-11
状态 离线
 
发表于 2008-4-18 00:46  资料  个人空间  短消息  加为好友  添加 lorui 为MSN好友 通过MSN和 lorui 交谈
今天写代码的时候,打算将一个数组存到Application中,但是报错。而VBS则没问题。
只好将数组toString()之后再存到Application中
取的时候,再split一下

顶部
zy3287
霸王龙
Rank: 6Rank: 6


UID 32377
精华 0
积分 1402
帖子 725
威望 737
阅读权限 70
注册 2005-7-7
状态 离线
 
发表于 2008-4-18 13:07  资料  个人空间  短消息  加为好友  QQ
顶一下,,,高手啊





平生多磨砺,男儿自横行
免费电影:中天丽影
继续努力
顶部
zy3287
霸王龙
Rank: 6Rank: 6


UID 32377
精华 0
积分 1402
帖子 725
威望 737
阅读权限 70
注册 2005-7-7
状态 离线
 
发表于 2008-4-18 13:10  资料  个人空间  短消息  加为好友  QQ
Rimifon老大,问一个问题,,,我的网站的登录用的cookie,我想用JS判断ASP的cookie,应该怎么写呢?





平生多磨砺,男儿自横行
免费电影:中天丽影
继续努力
顶部
xuqk
小恐龙
Rank: 3Rank: 3



UID 63223
精华 0
积分 337
帖子 139
威望 140
阅读权限 30
注册 2006-12-28
状态 离线
 
发表于 2008-4-18 21:13  资料  个人空间  短消息  加为好友 
学习了
在尝试用js编写asp

顶部
58653252
大恐龙
Rank: 4


UID 59985
精华 0
积分 637
帖子 308
威望 303
阅读权限 50
注册 2006-11-21
来自 黑龙江五常
状态 离线
 
发表于 2008-4-20 13:20  资料  个人空间  主页 短消息  加为好友  添加 58653252 为MSN好友 通过MSN和 58653252 交谈 QQ ICQ 状态
厉害  学习加收藏了

顶部
lin516
小恐龙
Rank: 3Rank: 3



UID 25319
精华 0
积分 366
帖子 204
威望 197
阅读权限 30
注册 2005-3-17
来自 福建福州
状态 离线
 
发表于 2008-4-23 13:29  资料  个人空间  短消息  加为好友  QQ
好文章





中国asp之家   玩玩小游戏:连连看游戏网  
顶部
jlmqq
爬虫
Rank: 2



UID 78463
精华 0
积分 160
帖子 81
威望 74
阅读权限 20
注册 2007-11-7
状态 离线
 
发表于 2008-5-21 10:17  资料  个人空间  短消息  加为好友  添加 jlmqq 为MSN好友 通过MSN和 jlmqq 交谈
很好,给了我很大的启发,谢谢!

顶部
jingjingit
小虫
Rank: 1



UID 86673
精华 0
积分 25
帖子 5
威望 5
阅读权限 10
注册 2008-5-9
状态 离线
 
发表于 2008-5-23 13:38  资料  个人空间  短消息  加为好友 
收藏起来好好学习下!!!

顶部
smilekiki
爬虫
Rank: 2



UID 12478
精华 0
积分 104
帖子 59
威望 59
阅读权限 20
注册 2004-6-5
来自 深圳
状态 离线
 
发表于 2008-6-11 10:17  资料  个人空间  主页 短消息  加为好友  QQ
冒试不是用item吧

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

顶部
 



当前时区 GMT+8, 现在时间是 2009-7-4 19:56
苏ICP备05080427号

Powered by Discuz! 5.5.0  © 2001-2007 51JS.COM
Processed in 0.128219 second(s), 6 queries , Gzip enabled

清除 Cookies - 联系我们 - 无忧脚本 - Archiver - WAP