项目中遇到,form提交IE下提示下载JSON信息:
网上也看到不少解决办法,下面提供自己的思路:
即修改返回参数: ContentType 从(application/json)修改为(text/html)
该Form有大量的图片信息,各种参数配置,所以不考虑ajax
Js代码片段
// form 提交表单信息
$('#Form_Id').form({
url : 'saveInfo.do',
onSubmit : function() {
},
success : function(json) {
var result = eval("(" + json + ")");
if (result.reflag == true) {
//跳到登录页面
location.href="***.do";
} else {
// 保存失败信息
alert("返回结果异常");
}
},
error :function (){
alert("返回数据异常!");
}
});
/**公司信息保存
* @param request
* @param vo
* @param receivefirstFile
* @param receivesecondFile
* @param receivethridFile
* @param receivefouthFile
* @return
* @throws IOException
*/
// 此处记得去除 @ResponseBody 同时 没有方法返回 使用void
@RequestMapping("/saveInfo")
public void saveInfo(HttpServletRequest request,
HttpServletResponse response,InfoVO vo,
String logo_doc,
String license_doc,
String tax_doc,
String org_doc,
String introducedImage_doc) throws IOException{
// JsonMsgVo定义json类型返回结果,
JsonMsgVo msg = new JsonMsgVo();
。。。。// 方法体内,为保存数据,日志保存
// 下面是关键代码:
// 1,设置编码格式 response.setContentType("text/html;charset=UTF-8");
// 一定是text/html,返回页面形式, 不能写为application/json
// 2,com.alibaba.fastjson.JSON (fastjson-1.1.24.jar)
// 3.用reponse.getWriter().print(""); 将结果打回到前端
// 4.reponse.getWriter() 关闭
try {
response.setContentType("text/html;charset=UTF-8");
String result = JSON.toJSONStringWithDateFormat(msg,"yyyy-MM-dd HH:mm:ss");
response.getWriter().print(result);
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(null != response.getWriter()){
response.getWriter().close();
}
}
// return msg;
}
注:
@ResponseBody
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。
此处不能添加该Annotation,
综上所述:
问题: form提交数据,IE 下提示下载JSON
1,去除ajax请求中 @ResponseBody 配置,
2,方法中不带返回结果 :public void。。。
3,在方法最后重新定义返回结果ContentType
try {
response.setContentType("text/html;charset=UTF-8");
String result = JSON.toJSONStringWithDateFormat(msg,"yyyy-MM-dd HH:mm:ss");
response.getWriter().print(result);
response.getWriter().flush();
} catch (IOException e) {
e.printStackTrace();
}finally{
if(null != response.getWriter()){
response.getWriter().close();
}
}
OK,问题解决。