程序员极客教程-前端开发让前端飞

文件上传返回JSON数据,在IE9下提示下载文件

2018-12-27  本文已影响6人  cbw100

在项目开发的时候,遇到一个文件上传后,在ie9浏览器下返回JOSN数据,提示保存下载的问题,图下图所示。


ie89.PNG

原因

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

IE9正属于不支持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");

    前端不需要改动。

tuiguang.png
上一篇下一篇

猜你喜欢

热点阅读