前台使用的是ajax的form提交,用于文件上传的表单提交:
$('#matchForm').form('submit',{
url: "/regression/getResult.action",
onSubmit: function(){
},
success: function(data){
data = eval("("+data+")");
for(var outkey in data){
var map = data[outkey];
for(var innerkey in map){
console.log(innerkey+","+map[innerkey]);
}
}
}
});
后台的返回值中文乱码解决:(通过输出流写到response中)
@RequestMapping("/regression/getResult.action")
@ResponseBody
public Object getResult(String tagId, String tagDataId, MultipartFile matchFile, String userId,
String[] dataChar,HttpServletResponse response,HttpServletRequest request) throws IOException {
ObjectMapper mapper = new ObjectMapper();
Map<String, Map<String, Object>> result = labelService.getResult(tagId, tagDataId, matchFile, userId, dataChar);
String json = mapper.writeValueAsString(result);
request.setCharacterEncoding("utf-8"); //这里不设置编码会有乱码
response.setContentType("textml;charset=utf-8");
response.setHeader("Cache-Control", "no-cache");
PrintWriter out = response.getWriter(); //输出中文,这一句一定要放到前面两句的后面,否则中文返回到页面是乱码
out.print(json.toString());
out.flush();
out.close();
return null;
}