IE下ajax返回值为json弹出下载框的方法总结
来源:互联网 发布:linux jdk tar安装 编辑:程序博客网 时间:2024/06/06 14:10
近日因为项目要求兼容IE7, 不得不修改上传图片的插件(由uploadify改为ocupload)。几经周折终于搞定上传功能,在chrome, ff测试都通过,偏偏在IE7会因为返回值是json, 会弹出下载框。(本机只有原生IE7, 未能测试IE8是否有该问题, 据说IE9及以上是已经支持json格式的)。当然网上还是有大把的解决方案的,个人测试后觉得最靠谱的还是:ContentType设置为text/plain。项目使用的是springMVC,具体代码如下:
package cn.***.saas.util;import net.sf.json.JSONObject;import org.springframework.http.HttpHeaders;import org.springframework.http.HttpStatus;import org.springframework.http.ResponseEntity;import cn.***.saas.constant.ResponseCode;import cn.***.saas.constant.ResponseStatus;public class ResponseUtilForIe { public static final String RESPONSE_BODY = "body"; public static final String RESPONSE_STATUS = "status"; public static final String RESPONSE_ERROR = "error"; public static final String RESPONSE_ERROR_CODE = "code"; public static final String RESPONSE_ERROR_MSG = "msg"; public static ResponseEntity<String> jsonSucceed(Object object, HttpStatus statusCode) { JSONObject jo = new JSONObject(); Object responseBody = DataUtil.formatApiResponse(object); jo.accumulate(RESPONSE_BODY, responseBody); return wrapResponse(ResponseStatus.SUCCEED, jo, statusCode); } public static ResponseEntity<String> jsonFailed(String errorMessage, HttpStatus statusCode) { return jsonFailed(errorMessage, ResponseCode.SERVER_ERROR, statusCode); } public static ResponseEntity<String> jsonFailed(Object errorMessage, ResponseCode code, HttpStatus statusCode) { JSONObject errorObj = new JSONObject(); errorObj.accumulate(RESPONSE_ERROR_CODE, code.getValue()); errorObj.accumulate(RESPONSE_ERROR_MSG, errorMessage); JSONObject error = new JSONObject(); error.accumulate(RESPONSE_ERROR, errorObj); JSONObject jo = new JSONObject(); jo.accumulate(RESPONSE_BODY, error); return wrapResponse(ResponseStatus.FAILED, jo, statusCode); } private static ResponseEntity<String> wrapResponse(ResponseStatus status, JSONObject body, HttpStatus statusCode) { HttpHeaders headers = new HttpHeaders(); headers.set("Content-Type", "text/plain;charset=UTF-8"); if (ResponseStatus.SUCCEED.equals(status)) { body.accumulate(RESPONSE_STATUS, ResponseStatus.SUCCEED.toString()); } else if (ResponseStatus.FAILED.equals(status)) { body.accumulate(RESPONSE_STATUS, ResponseStatus.FAILED.toString()); } return new ResponseEntity<String>(body.toString(), headers, statusCode); }}
在上传图片的controller方法里,返回值直接使用方法即可。此外也有说通过修改注册表的, 方法是: 在注册表中添加如下项:
[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json] "CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}" "Encoding"=dword:00080000 [HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json] "CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}" "encoding"=dword:00080000
或者直接将上述代码保存为.reg文件,双击执行即可。不过本人未曾试过此方法,因为对于web项目,不可能要求或者强制用户都修改注册表。- IE下ajax返回值为json弹出下载框的方法总结
- .NET easyui form提交后,返回json数据在IE下弹出下载的问题解决方法
- IE中返回application/json弹出下载框问题
- IE执行AJAX,返回JSon出现下载文件的解决方法
- 360/IE兼容模式下。append 失效,ajax返回json,传值为0问题
- extjs3.4+struts2上传文件却弹出下载框,下载的文件内容为json 返回的值的问题
- IE下返回Json提示下载
- 弹出IE下载框提供下载的方法
- IE使用ajaxFileUpload上传文件后台返回json类型前台弹出下载提示框
- 避免IE执行AJAX时,返回JSON出现下载文件
- 避免IE执行AJAX时,返回JSON出现下载文件
- springmvc+easyui Ajax提交返回json IE出现下载问题
- 避免IE执行AJAX时,返回JSON出现下载文件
- 避免IE在ajax请求时,返回json出现下载
- 避免IE执行AJAX时,返回JSON出现下载文件
- 表单提交返回json 弹出下载框
- SpringMVC返回JSON , 解决IE下下载问题
- 返回JSON数据,在IE下提示下载文件
- 为list控件增加排序功能,并添加header排序图标
- 浅谈.NET反射机制的性能优化
- 小波变换和motion信号处理(一)
- 高吞吐高并发Java NIO服务的架构(NIO架构及应用之一)
- android相机拍照源码
- IE下ajax返回值为json弹出下载框的方法总结
- 各种jar包下载
- ios xcode 下 报出 ”xx“is missing from working copy 的问题
- 在linux中使用内存映射(mmap)操作文件
- 使用PowerShell获得Windows Event Log
- DB2递归实现字符串分组连接操作
- 逆向编程培训(4)
- 《Linux命令行与shell脚本编程大全》 第二十四章 学习笔记
- WinForm中的DataGrid控件在刷新后保持原滚动条位置不变