难了,有关ajax的执行问题

今天在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()部分.

2个回答

中.
href属性是指链接地址,即浏览器的地址栏,默认是相对定位.如果是类似http://url这种形式,就采用绝对定位的方式.
由于浏览器的地址栏中可以通过javascript:code的方式直接调用javascript,所以href中如果是javascript:code的形式,那么就会执行code部分的代码.

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()的代码.......................................

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问