问题:html
后台代码以下:web
@RequestMapping("menuTreeAjax") @ResponseBody /** * 根据parentMenuId获取菜单的树结构 * @param parentMenuId * @return */ public String menuTreeAjax(Integer parentMenuId) { JSONArray array = menuService.getTreeMenuByParentMenuId(parentMenuId); return array.toString(); }
前台代码以下:ajax
$.ajax({
url:'menuTreeAjax?parentMenuId=${menu.menuId}',
async:false,
dataType:"json",
success:function(data){
menuTree=data;
alert(data[0].text);
}
});
发现前台显示的json数据中的中文为???。乱码问题。spring
缘由:json
Spring中解析字符串的转换器默认编码竟然是ISO-8859-1mvc
以下所示:app
解决方法:async
方法一,使用(produces = "application/json; charset=utf-8")编码
@RequestMapping(value="menuTreeAjax", produces = "application/json; charset=utf-8") @ResponseBody /** * 根据parentMenuId获取菜单的树结构 * @param parentMenuId * @return */ public String menuTreeAjax(Integer parentMenuId) { JSONArray array = menuService.getTreeMenuByParentMenuId(parentMenuId); return array.toString(); }
方法二:在springmvc.xml配置:url
<!-- 处理请求返回json字符串的乱码问题 --> <mvc:annotation-driven> <mvc:message-converters> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
PS:若是返回的不是json,而只是一个字符串,则只须要这样就能够了。将produces改成text/html
@ResponseBody @RequestMapping(value="webserviceDemo1", produces = "text/html; charset=utf-8") public String webserviceDemo1(){ WeatherServiceService factory=new WeatherServiceService(); WeatherService service=factory.getWeatherServicePort(); String result=service.getWeatherByCityname("厦门"); return result; }