项目版本:spring3.0.5MVC。
在前端时间的项目开发中,遇到了Ajax请求传回json数据时总报406错误。
由于,码猿第一时间就是百度(当然想谷歌来着,可尼玛这堵墙最近和谐力度太大),我也不例外,也可以进行百度。一查,哎哟,这尼玛靠谱哎,好多码农都遇到了本屌是一样的错误。心中顿时暗爽(原谅屌丝我的这点小心态),看来我不是那该死第一个出现这个错误的人。由于码农屌丝我就开启了扫页模式,基本一致的解决方法是:把springMVC的版本改成spring3.1.X MVC。
在这里我不得不吐槽一下中国的IT论坛,都是尼玛复制黏贴,难怪山寨能力如此出众的中国人,创新能力几乎为零(一大波喷尸正在接近。。。)。
好了,吐槽吐完了,改说说正经事了,不然又有一些优越感十足的人要喷屌丝我了。
首先你要传回json的数据格式,那么必须得对spring的配置文件进行一定配置,如下:
<!-- 启动spring注解功能,完成请求和注解的POJO映射 -->
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<!-- 配置一下对json数据的转换 -->
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"></bean>
</list>
</property>
</bean>
配置文件完成,在后台处理那块也必须要注意的地方,就是必须有@ResponseBody ,具体如下:
//异步查询客户信息
@RequestMapping(value="project/customerList",method = RequestMethod.POST)
@ResponseBody
public List<Customer> customerList(String customerid){
System.out.println(customerid);
List<Customer> customerList=projectService.customerList();
return customerList;
}
在然后就是页面请求的方法了,本屌丝用的是jQuery的第三方插件,方法如下:
function onChange(idFlag){
$.ajax( {
type: "POST",
url : 'customerList.bia',
data: 'customerid='+idFlag+'',
success : function(data) {
alert(data);
},
error : function() {
alert("系统报错,稍后重试!");
}
});
}
处理结果,如下图所示:
最后得出结论就是:当Ajax请求json数据时,并且springMVC的版本是3.0.X时,不一定非得改版本。我也是看到咱们这些论坛的那些回复很气愤,决定写出来,以防止更多的码农被“复制黏贴”所祸害。再次也希望中国IT论坛能少些如此现象。