运行helloworld时出现 javascript错误
“错误:对象不支持此属性或方法”
在ie浏览器中http://localhost:8000/Struts_Dwr/dwr/test/service时可以出现
- sayHelloWorld( ); <script type=text/javascript> var reply0 = function(data) { if (data != null && typeof data == 'object') alert(dwr.util.toDescriptiveString(data, 2)); else dwr.util.setValue('d0', dwr.util.toDescriptiveString(data, 1)); } </script>
也可以运行
运行结果为:
sayHelloWorld( ); <script type=text/javascript> var reply0 = function(data) { if (data != null && typeof data == 'object') alert(dwr.util.toDescriptiveString(data, 2)); else dwr.util.setValue('d0', dwr.util.toDescriptiveString(data, 1)); } </script> "Hello Worldwanxuesi!"
但是在jsp中用javascript运行会报以上错误,为什么??
jsp代码如下:
<%@ page language="java" pageEncoding="UTF-8"%>
<html>
<head>
<title>My JSP 'first_dwr.jsp' starting page</title>
<script type='text/javascript' src='dwr/interface/service.js'></script>
<script type='text/javascript' src='js/engine.js'></script>
<script type='text/javascript' src='js/util.js'></script>
<script type="text/javascript">
function firstDwr(){
service.sayHello("Jorwen",callBackHello);
}
function callBackHello(data){
alert(data);
}
</script>
</head>
<body>
<input type="button" name="button" value="测试" οnclick="firstDwr()">
</body>
</html>
解决办法:
到网上下载一个dwr.jar 要是2.0的,大小为494k的,就不会出现这个问题了。
但是会出现另外一个问题(eclipse 控制台):
2007-11-19 13:22:52 org.directwebremoting.util.CommonsLoggingOutput error
严重: A request has been denied as a potential CSRF attack.
只要在
在web.xml配置文件中..
dwr的配置
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>crossDomainSessionSecurity</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
至此,控制台显示正常。但js脚本还会报错:
错误:例外被抛出且未被接住。
未完待续!!共同研究!!
# Qingfengcaiyun 发表于2007-12-08 20:36:12 IP: 60.55.62.*-
将这些代码
<script type='text/javascript' src='dwr/interface/service.js'></script>
<script type='text/javascript' src='js/engine.js'></script>
<script type='text/javascript' src='js/util.js'></script>
编程
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/interface/service.js'> </script>
就正常了!
只要调用dwr.jar内部的engine.js和util.js就可以了
我也犯过你的毛病,后来打开dwr.jar看了一下结构突然醒悟了