解决文件上传返回JSON数据,在IE下提示下载文件(ie8,9)

问题描述:

使用<input type=file> 或者jquery.form.js异步上传文件的时候,mvc后台返回json对象的时候ie8会自动弹出下载提示如图
 
而 下载下来json文件,内容就是controller返回的json数据。
^N^ 自己的图扑街了,从别的博客偷一个回来
 
 

 原因:

jQuery-File-Upload.js使用了两种方式上传文件。对于支持XMLHTTPRequest文件上传的浏览器,使用XMLHTTPRequest上传文件,而对于那些不支持XMLHTTPRequest文件上传的浏览器,jQuery-File-Upload转换为iframe来上传文件。

IE8正属于不支持XMLHTTPRequest文件上传浏览器之一。

解决思路:

基于iframe上传文件,对于返回json对象,如果把响应头的content-type设为"application/json",ie中会弹出下载文件的提示框。解决这个问题的方式是把响应头的content-type的值设为"text/plain"或者"text/html"

解决方案:

方案1.    后台返回json串,而不是json对象,如 return Json(new { state = 1, msg = "" });改为return Content(" {state:1,msg:''}"); 

            前台ajax接收类型datatype:由json改为text。成功后接收的data转成json对象即可使用: vardata = eval("(" + data1 + ")");

方案2.    后台依然返回json对象, returnJson(new { state = 1, msg = "" },"text/html");              前台不需要改动。

       

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值