前言:
最近项目上遇到必须调用IE的情况,所以就和IE浏览器接触了那么段时间,本人使用的是IE8,这段时间遇到的坑真是恶心啊,一个一个解决问题很是头疼,为了以后不至于忘记,也为了大伙不头疼,故写博客记录记录。
遇到的第一个坑:
IE浏览器下输入地址如:http://localhost/xx/getJson.do获取json数据,这时弹出下载窗口,其他浏览器测试竟然是正常的json数据。
解决办法:
修改服务器响应头:Content-Type:text/html;charset=UTF-8
Java代码: response.setContentType("text/html;charset=UTF-8");
如果之前是application/json就会弹出下载窗口
如果使用springmvc返回json的话可以做如下设置:
<mvc:annotation-driven>
<mvc:message-converters>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html;charset=UTF-8</value><!-- 避免IE出现下载JSON文件的情况 -->
</list>
</property>
<property name="objectMapper">
<bean class="com.fasterxml.jackson.databind.ObjectMapper">
<!-- 处理responseBody 里面日期类型 -->
<property name="dateFormat">
<bean class="java.text.SimpleDateFormat">
<constructor-arg type="java.lang.String" value="yyyy-MM-dd HH:mm:ss" />
</bean>
</property>
<!-- 为null字段时不显示 -->
<property name="serializationInclusion">
<value type="com.fasterxml.jackson.annotation.JsonInclude.Include">NON_NULL</value>
</property>
</bean>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
遇到的第二个坑:
IE浏览器上调用JQ的ajax进行请求接口获取json数据的时候,其他浏览器明明可以正常弹出我预计的数据,但是IE这老哥子就是不显示,调来调去都没有显示,后来仔细看,IE给出了错误消息:缺少标识符,字符串或数字 URI: http://localhost:8080/XXXX/XXXX
解决办法:
在IE中,script的方法或者ajax中最后一项的末尾是不允许有逗号的,在其他浏览器下则可有可无。检查一下有逗号就去掉就好了。
比如:
$("#browser").treeview({
animated: "fast",
control:"#sidetreecontrol",
});
或者:
$.ajax({
url : 'xxxx.do?method=xxxx',
type : "GET",
dataType : "json",
async : false,
cache:false,
success : function(data) {
var json = eval(data);
alert("22222");
},
});
Java代码: