spring mvc ajax上传文件 避免IE返回JSON出现下载文件
来源:互联网 发布:网络教育有学籍吗 编辑:程序博客网 时间:2024/05/22 15:30
最近遇到一个极为头疼的事情:
使用jquery.form.js (version: 3.51.0)异步提交表单,上传文件,表单<form id="accountForm" action="xx" method="POST"enctype="multipart/form-data">...</form>
在google里面能够正常使用,但是测试ie8时,进入后台,文件上传成功,@responseBody 返回一个map时,ie8提示下载文件,并没有进入ajax回调函数。
注释掉<mvc:annotation-driven /> 。没有配置这个,就可以忽略当前步骤。
2.修改配置
使用jquery.form.js (version: 3.51.0)异步提交表单,上传文件,表单<form id="accountForm" action="xx" method="POST"enctype="multipart/form-data">...</form>
在google里面能够正常使用,但是测试ie8时,进入后台,文件上传成功,@responseBody 返回一个map时,ie8提示下载文件,并没有进入ajax回调函数。
遇到类同问题,请往下继续阅读。
解决步骤:(请各位仔细对比)
注释掉<mvc:annotation-driven /> 。没有配置这个,就可以忽略当前步骤。
2.修改配置
<bean id="annotationMethodHandlerAdapter" class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"><property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /><!-- json转换器 --> </list> </property></bean><bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list><!--防止ie8出现下载,mvc:annotation-driven注释掉,需要把text/json提到最前面,默认返回json,以免所有ajax设置dataType:json --> <value>text/json;charset=UTF-8</value> <value>text/html;charset=UTF-8</value> <value>application/json;charset=UTF-8</value> </list> </property></bean>
3.修改javascript
$("#Form").ajaxSubmit({type : "POST",dataType : $.isIE() ? "text" : "json",success : function(data) {if (typeof (data) == "string") {//ie会进入这里data = JSON.parse(data);//或者data = eval("(" + data + ")");}alert(data.status);//后面的代码按各自逻辑来。}});
1.第三步使用ajaxSubmit依赖jquery.form.js,不同jquery.js $.ajax()不能实现异步上传文件。
2.第三步 $.isIE() 判断浏览器是否是IE浏览器,代码:
$.isIE = function(){return !!window.ActiveXObject || "ActiveXObject" in window;}3.第三步回调中,使用了data = JSON.parse(data);,是因为,当代码在IE中运行,提交使用的是dataType:'text',即便后台返回的是json,但是这里回调得到的data依然是一个字符串,因此需要把data转为json。google中,回调得到的data已经是json,而非字符串,所以这里不会进入if(){}语句。
4.第二步中<value>text/json;charset=UTF-8</value>配置建议放最前面,否则,使用$.ajax,不配置dataType时,回调得到的是字符串。配置dataType:'json'回调得到的才是json。放最前面,则未配置dataType时,回调得到的依然是json
望各位同行通过我这篇总结,能解决遇到的这个问题。文字冗余,见谅!
0 0
- spring mvc ajax上传文件 避免IE返回JSON出现下载文件
- spring mvc 避免IE执行AJAX时,返回JSON出现下载文件
- spring mvc 避免IE执行AJAX时,返回JSON出现下载文件
- 避免IE执行AJAX时,返回JSON出现下载文件
- 避免IE执行AJAX时,返回JSON出现下载文件
- 避免IE执行AJAX时,返回JSON出现下载文件
- 避免IE执行AJAX时,返回JSON出现下载文件
- 避免IE浏览器执行AJAX时,返回JSON出现下载文件
- IE执行AJAX,返回JSon出现下载文件的解决方法
- 避免IE在ajax请求时,返回json出现下载
- eclipse spring mvc json ie下载文件
- 在解决spring mvc 返回json对象 ie浏览器访问会出现下载文件问题的解决方案
- 处理文件上传后返回json数据在IE出现文件下载问题
- asp.net mvc ajax上传文件 然后返回json
- Spring MVC避免IE提示下载返回的JSON 数据——解决办法
- spring mvc文件下载 及 ajax异步上传图片
- Spring MVC文件上传 下载
- Spring mvc 文件上传 下载
- webpack简单使用
- if 语句的运用
- 3.24二级web前小记
- Windows7 下Eclipse集成Cygwin配置Android NDK环境编译JNI库一
- MiniUi框架简单实例
- spring mvc ajax上传文件 避免IE返回JSON出现下载文件
- Windows命令行查看文件的MD5
- 遭遇“HTTP 错误 500.19 无法访问请求的页面,因为该页的相关配置数据无效。”
- Android内存溢出分析
- jQuery.get() 函数详解
- ubuntu 16.04下搜狗输入法不能输入中文解决
- C++实验3-个人所得税计算器
- 大白菜装win10注意事项
- Windows7 下Eclipse集成Cygwin配置Android NDK环境编译JNI库二