jQuery在IE中解释XML要注意的问题:
不管在写哪种
Web
介面的程式,都要特別重视 Content-Type 的设定,无论是 text/html , text/plain , text/xml 对于浏览器
来说,都是不同的意一的,处理的方式也有可能不一样,当你使用越符合网络
标准的方法来写程序
,相对的出问题的几率也会越小 (当然有例外)。
Web Service 是用 HTTP Handler 写的,而我在程序中所指定的 Response.ContentType 是 "text/plain",当我改成 "text/xml" 之后,所有程式就可以在 IE7 下正确执行了!
另外提及一点,在使用 jQuery.post( url, data, callback, type ) 方法开发
时,这个方法的最后一个参数 type 指的是返回资料的类型,其中包括有 "xml", "html", "script", "json", "jsonp", 与 "text" 等,即便你手动修改成 "xml" 而你的 Web Service 回应的资料所设定的 Content-Type 不是 text/xml 的话,在 IE 浏览器里一样是无法运行的,甚至会造成
Java
Script 执行错误。当不指定 type 参数时,预设 jQuery 会聪明的自动
判断回应的 Content-Type 自动判断解析
的资料类型
页面
getTc.jsp 输出XML:
<Root>
<Succeed>200</Succeed>
<Tc>***********</Tc>
</Root>
页面 showTc.jsp 回显Tc中的变量。
<script>
$.get
(
"getTc.jsp?account=*****",
function ( xml ){
alert( $( "Tc" , xml ).text() );
}
);
</script>
FIREFOX中显示正常,可以取到TC的值,
而IE中能取到XML的值
<Root>
<Succeed>200</Succeed>
<Tc>***********</Tc>
</Root>
但是无法显示$("Tc",xml).text();
原因是在getTc.jsp页面中有这么一句
<%@ page contentType="text/html; charset=gbk"%>
改成
<%@ page contentType="text/xml; charset=gbk"%>
就好了
原来在IE中,只要不写contentType = "text/xml"
jQuery都不会按XML格式来处理数据
而FireFox则兼容 text/html text/xml
|