日期:2014-05-17  浏览次数:20775 次

spring3接受jquery的ajax请求后不执行回调函数(success),求解
如果您没用过sping3下用ajax交互json,可能看不懂下边的用法。
用过的同志有遇到过这种情况吗,请帮助解决!网上的办法也找了一些都不行,关键没有相关sping3下的这种情况,有说把dataType : 'json'注掉等等,都试了不管用。

Controller代码:
@RequestMapping(value="/sendemail", method = RequestMethod.POST)  
@ResponseBody 
public ShareEmail testSendMail(@RequestBody ShareEmail shareEmail){
//接收前台传过来的 json数据,封闭为shareEmail对象
String emailTo = shareEmail.getEmail();
String message = shareEmail.getMessage();

//利用接收到的数据,实现逻辑
SyncUtil.sendSimpleMailMessage(emailTo, message);

                  //因为有@ResonseBody,可以将返回值返回给页面
return shareEmail;
}

ajax代码:

                       $.ajax({   
        type : 'POST',   
        contentType : 'application/json',   
        url : '${contextPath}/edisk/sendemail',    
        data : jsonShareFormInfo,   
        dataType : 'json',
                            //下面的success不执行,不知道为什么,怀疑spring3在转化返回值为json对象时格式不对。
        success : function(data){ 
           alert(data.message);  
           //alert("发送成功");   
        },
        error : function(data){
           alert(data.message);
        }  
    }); 

配置文件的写法:

<!-- spring3在接收contentType为application/json的request时会自动将json字串间转换成期望 的java对象,
基于Jackson JSON Processor(http://jackson.codehaus.org/),返回时负责将数据转换成JSON格式-->

<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
        <property name="messageConverters">  
            <list>  
                <ref bean="mappingJacksonHttpMessageConverter" />  
            </list>  
        </property>  
    </bean>  
    <bean id="mappingJacksonHttpMessageConverter"  class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter" />  
 
------解决方案--------------------
概念基本上就错误。
------解决方案--------------------
支持lz
------解决方案--------------------
学习了
------