今天在jsp页面中这样执行了一个js,在这个js中把数据发送给servlet,可是遇到了一个很奇怪的问题:
在jsp页面中的代码是这样的:
1.clearResum
但是js中的clearResum()函数不执行,这个函数的主要功能是把数据发送到后台给servelt处理,也就是没有把数据发送给serlvet。
但是如果改成:
2.clearResum,则xmlHttpRequest.status的返回值始终是0,我已经把项目成功发布了,所以应该不存在tomcat的配置问题。
3.如果把 1 中的代码换成 clearResum,这个js也始终不执行,而把clearResum()函数换成一个简单的test()函数( 这个函数只有一条alert("") )就可以执行。
4.在 1 中,如果把clearResum中的onclick="clearResum()"中的clearResum()函数换成一个简单的test()函数( 这个函数只有一条alert("") )就可以执行。
问题:被搞的很糊涂,非常不理解上述四点描述的问题,特别是第 1 点和第 3点,clearResum()为什么始终不执行,而第 4 点执行后得到的xmlHttpRequest.status的值始终是0?希望哪位兄弟帮忙解答一下,本人感激不尽,先谢谢了!!
[b]问题补充:[/b]
谢谢 ham:
clearResum()
{
send("clearResum?p=1");
}
send()的方法体主要是建立xmlHttpRequest对象并发送数据和调用handleResponse方法处理服务器的返回信息。
还有,您能不能解释下中href 和onclick执行js的区别,谢谢关注!
[b]问题补充:[/b]
嗯,好,谢谢 ham 的解释,回头我再仔细检查和测试下function send()部分.
onclick='code',这里其实是类似于创建了一个Function的对象,即onclick=new Function('code');这种形式,其中的code就是被执行的javascript代码.
这两种方法执行javascript区别就是,href中以javascript:code方式调用的是javascript语句,onclick是执行的一个Function的对象.正因为onclick是一个Function对象,所以它可以有返回值,onclick 中所调用的方法如果返回true就证明这个方法的onclick事件是有效的,返回false就证明这个方法的onclick事件是无效的.这里可能看不出效果来,但是如果有一个元素的onmousedown事件返回了false,那么它的onclick事件将永远不会执行.因为onclick是需要mousedown并且mouseup才会成功.
在href和onclick同时存在的时候,会先调用onclick方法,如果onclick方法返回值为true或者无返回值的话就会继续执行href中的内容.
javascript:void(0);这句话的原理我还不清楚,不过它的作用就是什么也不执行.
上面只是个人的理解,如果讲错了,多多包涵.
在你的代码中,onclick和href执行的效果应该是一样的.感觉错误应该是出现在send方法之中.
clearResum()的代码.......................................