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 |