asp jscript编程(1)

今天开始修改我以前做得那个访问统计小插件,顺便加强一下asp和javascript。(确切的说应该是JScript,自从ie4.0以后,微软就用自己的JScript了,跟javascript基本上没什么区别。大概是脚本引擎将javascript,JScript都用JScript解释。)

asp用了很久了,可是一直没有认真学习过,很多东西含混不清,javascript也是。本来已经不想再用asp了,但是这段时间看了些东西,发现原来我很菜,既然学了,就把它学好;也不是为了学习asp而学,学什么都一样,关键是一个态度。

之所以选择javascript,一是感觉javascript比vbscript要规范;二是javascript在客户端还是必不可少的;三是跟java之类语法有些相似。

刚刚开始写,可能比较零乱,只是做个记录,待日后再整理。

 

 

首先是用javascript书写asp方法:

1.在iis中设置默认脚本语言为javascript,在站点属性-主目录-配置-默认asp语言

2.在asp文件第一行用<%@LANGUAGE=JAVASCRIPT>指定脚本语言

3.用<SCRIPT RUNAT=SERVER LANGUAGE=JAVASCRIPT></SCRIPT>指定服务器端执行脚本,我选择了这种,因为这样EditPlus才可以正确显示脚本颜色和标记,便于书写和排错。

Global.asa

这个文件的功能我就不多说了,在网上找了一下,全都是vbscript的例子。vbs的过程跟js中的function应该是等价的,可以用。

<SCRIPT LANGUAGE=javascript RUNAT=Server>

 function Application_OnStart() {
  Application('VERSION') = '0.1';
 }

 function Application_OnEnd() {

 }

 function Session_OnStart() {

 }

 function Session_OnEnd() {


 }

</SCRIPT>

在另一个asp文件中Response.write(Application('VERSION'));可以看到结果。(需要注意的是javascript调用asp内置对象首字母要大写。这也算是个好习惯。)

数据类型判断

今天碰到一个小问题,判断一个变量的数据类型。js有typeof()函数可以返回一个对象的类型,对象的constructor方法可以返回一个对象的原始构造函数。

当直接赋值给一个变量的时候,可以返回正确的类型,但是当用初始化的方法赋值时,typeof()返回的总是object

比如:

var figure = 3;或者var figure = Number('3');   Response.write(typeof(figure));返回的是Number

var figure = new Number('3');    或者从asp内置对象Request中获得的数值(如:var figure = Request(str);),返回的就是object

但是Response.write(figure.constructor);得到的却是同样的结果:function Number() { [native code] }

测试是否为Number可以用figure.constructor == Number来判断。

同时我还找到javascript的一个全局函数:isNaN

当我们赋给figure的值是数值时,isNaN返回False,否则返回True。比如:isNaN(a=1); isNaN(a='1'); isNaN(a= Number('1')); isNaN(a=new Number('1'));返回的都是False,isNaN(a='1a')等返回的是True。我在网上找到很多用js写的IsNumeric函数,有些笨拙了。

另外,当Request对象返回一个空值时,javascript中得到的这个空值我不知道怎么比较。

比如:var requestStr = Request(str);返回一个空值

当直接用Response.write(requestStr);什么都没有显示,但是Response.write('str:'+requestStr);却打印出来一个undefined。

用requestStr == 'undefined'   requestStr == '' 都不能得到正确的结果。

最后我用比较笨拙的办法,var requestStr = new String(Request(str));这样再用requestStr == 'undefined'就可以得到正确的结果了。

 

自己测试整理的,不当的地方,还望各位指正。 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值