问题是这样的....一台服务器中发布了2个项目,这两个项目中DWR的配置是一样的.一个项目没有出现这个问题,但是另外一个项目却出现Ajax(我在DWR.xml文件中定义的JavaScript名字)未定义,但是2个项目在本机上都没问题...在网上找了很久,有的说是路径错误,有的说是包没加进去,有的说是jdk版本不同,但是应该不属于这些情况...因为就是一个项目没问题..一个项目出问题...这里才头大...1.DWR.xml配置<dwr>
<allow>
<convert converter="bean" match="test.MemberBO" />
<create creator="spring" javascript="Ajax">
<param name="beanName" value="Ajax" />
<include method="定义的方法" />
</create>
<filter class="一个过滤器的类"></filter>
</allow>
</dwr>2.web.xml配置<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>config-member</param-name>
<param-value>/WEB-INF/DWR.xml</param-value>
</init-param>
<load-on-startup>10</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr_test/*</url-pattern>
</servlet-mapping>3.applicationContext.xml配置
<bean id="Ajax" class="com.bin.service.Ajax">
<property name="dataDAO">
<ref local="dataDAO" />
</property>
</bean>上面是对DWR的配置....2个项目基本上是一样的.....但就是一个没问题...一个有问题....其实...我想了一下是不是服务器那边的配置问题....因为我是接着别人的项目来做的..而且服务器这里的配置我也不太熟...希望各位碰到过这样的问题的...或者是高手们来帮个忙....我已经在这里浪费了很多时间了......
拜托了.....

解决方案 »

  1.   

    日志里没有错误信息.....只是在打开页面的时候浏览器左下角那里说Ajax未定义....
      

  2.   


    <script type='text/javascript'
    src='/dwr/interface/AjaxService.js'></script>
    <script type='text/javascript'
    src='/dwr/engine.js'></script>
    <script type='text/javascript'
    src='/dwr/util.js'></script>
    <script type="text/javascript"
    src="/public/js/head.js"></script>这是在页面中看到的页面源代码显示的js路径....这个在服务器中应该是没错的...
      

  3.   


    <script type='text/javascript'
    src='${pageContext.request.contextPath }/dwr/interface/Ajax.js'></script>
    这是两个项目中都用到的引用js的代码
      

  4.   

    <script type='text/javascript'
        src='/dwr/interface/AjaxService.js'></script>
    你可能是这里除了问题,需要把完整路径加上。
    给你一个比较完整的实现过程你参考一下:
    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>false</param-value>
    </init-param>
    <init-param>
    <param-name>classes</param-name>
    <param-value>java.lang.Object</param-value>
    </init-param>
    </servlet>
    <servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
    </servlet-mapping>
    dwr.xml
    <dwr>
        <allow>
    <convert match="com.******.autoInfoQuery.bo.CAreaBean" converter="bean"></convert>
    <create javascript="cityService" creator="spring">
         <param name="beanName" value="IAreaService"></param>
         <include method="getAreaByCity"/>
         </create>
        </allow>
    </dwr>spring的配置
     <bean id="IAreaService" class="com.*******.service.impl.AreaServiceImpl">
    <property name="areaDao"
    ref="IAreaDao">
    </property>
    </bean>
    js 的引用
    <script language="javascript" src="<%=path%>/dwr/engine.js"></script>
    <script language="javascript" src="<%=path%>/dwr/util.js"></script>
    <script language="javascript" src="<%=path%>/dwr/interface/questionAndAnswerService.js"></script>
    js的调用代码
    try{
       cityService.getAreaByCity(objValue, getAreaByCityRoll);
       }catch(e){alert(e.message);}
    }
    dwr就这几步,保证没错误就OK
      

  5.   


    <script type='text/javascript'
        src='/dwr/interface/AjaxService.js'></script>
    <script type='text/javascript'
        src='/dwr/engine.js'></script>
    <script type='text/javascript'
        src='/dwr/util.js'></script>
    <script type="text/javascript"
        src="/public/js/head.js"></script>
    如果是多个模块的话,就要注意路径的问题了
      

  6.   

    这个是在head.jsp里面的,其他页面都include它...所以就只有head.jsp里面有这几句引用js的代码
      

  7.   


    我已经试过加上项目名.....但在服务器发布之后.....依然是Ajax未定义......我有点怀疑是不是服务器里的配置问题...因为没有发生问题的那个项目是很早之前就在那台服务器上跑的了...但是DWR应该没有在服务器那里配置文件路径这种吧....
      

  8.   

    你用 http://55.121.121.121:8080/ss/dwr,你服务器IP地址访问一下,如果有你定义的AJAX,说明DWR配置没问题,那估计就是你页面引用时路径除问题了
    但如果没有出现AJAX的话那估计就是你DWR配置除问题了
      

  9.   

    你在AJXA.JS里面第一行直接打印 alert(1223);如果打印出来了就说明路径没问题.说明是配置上出了问题.
      

  10.   

    楼主,我是这么写的<script type='text/javascript' 
        src='dwr/interface/AjaxService.js'> </script> 
    没出现你这种情况啊!
      

  11.   

    <script type="text/javascript" src="dwr/engine.js"></script>
    <script type="text/javascript" src="dwr/util.js"></script>
    <script type="text/javascript" src="dwr/interface/Index.js"></script>
    这是我的,这样在我的那个工程下一切正常,你是不是路径搞错了,你那样写好像 不对
      

  12.   

    在代码中我是这样写的:<script type='text/javascript'
    src='${pageContext.request.contextPath }/dwr/interface/Ajax.js'></script>
    <script type='text/javascript'
    src='${pageContext.request.contextPath }/dwr/engine.js'></script>
    <script type='text/javascript'
    src='${pageContext.request.contextPath }/dwr/util.js'></script>
    <script type="text/javascript"
    src="${pageContext.request.contextPath }/public/js/head.js"></script>这样也可以....就是但是出这样的错...而且诡异的地方在于...本地测试..两个项目都没问题....服务器上...一个项目可以...另外一个项目却出这个问题了....灵异时间啊....代码这里我想应该是没错的...但是错在哪里呢....头大啊.....
      

  13.   

    今天我又试了一下....我用没问题的那个项目...copy了一份...然后什么也没改....就以另外一个域名在服务器发布了一次...但是同样出现Ajax未定义....何解呢....已经极度头大...
      

  14.   

    会不会是引入的dwr js文件有问题啊,我以前用dwr经常会出现这样的问题,而且都不好解决,有时候解决了都不知道修改过什么了
      

  15.   

    请问一下...有没有其他Ajax框架也是可以调用JAVA类的方法的?
      

  16.   

    GWT也是吧。或者说GWT整个都是Java,呵呵。