form提交下,IE下提示下载Json


项目中遇到,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,问题解决。



转载于:https://my.oschina.net/tangxi/blog/620820

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值