600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Microsoft JScript 运行时错误: 缺少对象 原因分析

Microsoft JScript 运行时错误: 缺少对象 原因分析

时间:2024-04-18 03:14:08

相关推荐

Microsoft JScript 运行时错误: 缺少对象 原因分析

今天接到一个任务,原因是一个不知道的jsp页面,在点击关闭一个div面板时发生错误:

Microsoft JScript 运行时错误: 缺少对象,原因分析

然后百度了一番,是某处的JavaScript代码有问题,检查<head></head>中的script代码语法,一定是这里出了问题,是某个对象没有在这段代码中定义导致。

将信将疑,仔细搜寻一番,最后果然发现了问题。是因为关闭div的方法没有添加进去。修改完毕,终于正确了。

大概理了下思路,先定位错误的页面,然后定位错误发生的地方,看是什么操作引发的错误,然后一步步分析最终问题的所在。

===========================================

另外有一个疑惑,就是jsp中全局变量的声明问题。

使用jsp页面中<%! %>全局变量声明遇到的问题

一般喜欢把页面里多处要用到的变量设置成全局变量,如:

当把该变量赋值后,再次访问该页面时,该变量的值依然保存。这使得想通过用全局变量接受提交的参数时会受到一些迷惑:

if(request.getParameter("operation")!=null)

ID = request.getParameter("operation").trim();

当ID在前一次赋过初值后,因为另一种原因而再次访问该页面但‘operation'参数为空时,本来希望ID也为空,但实际上ID的值为上次访问该页面时赋的值。当希望通过ID的值做不同的操作时可能引起操作类型的混乱。

原因:使用<%! %>定义的变量编译成servlet后成为servlet的私有成员变量,在servlet环境中,对于一个JSP页只允许有一个结果servlet的实例在运行和响应所有的页面请求。因此,在结果servlet中所有的成员变量可以被所有的请求所共享,所以只要成员变量没有重新赋值,下次访问该页面时仍然不变。而在<% %>中定义的变量编译成servlet后成为service()方法的一个本地变量,而service()方法中的本地变量只能每响应一次请求就重建一

次。

解决的办法是将ID用<% %>定义,或在判断ID的操作后重新对ID初始化。

自己添加的内容为:

<%!

//设置全局变量

int i=0;

%>

<%

response.setHeader("refresh","1");

%>

<h1><%=++i%></h1>

该页面若编译成功后生成Servlet文件,全局变量i就会被所有客户的请求所共享,即客户端每进行一次请求,变量i就会加1。

当修改了*.jsp文件后,再次在客户端进行访问,这时全局变量i就又从0开始变化了。

全局变量和 page,request,session.application中的application变量类似。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。