`
tonysmith
  • 浏览: 171007 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

jQuery的Ajax传送xml 中<![CDATA] 在不同浏览器上的兼容性问题

阅读更多

这几天开发项目,在UI上遇到一个难题:jquery ajax 获取返回值xml不支持,<websitename><![CDATA[http://beijing.lashou.com/]]> </websitename>,包含CDATA 竟然获取不到值;$(xml).find(websitename).text(); 在晚上查找了半天,找到一个解决方案,


datatype:text/xml 修改为 datatype:xml

 

但同样的,问题也来了,在chrome浏览器和IE浏览器不兼容。

 

找到一个解决方案:

 

jQuery在用Ajax传送数据时,有一个参数是dataType,对于其的使用,手册是这么说明的。

 

dataType (String) : 预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息返回 responseXML 或 responseText,并作为回调函数参数传递,可用值:

"xml": 返回 XML 文档,可用 jQuery 处理。

"html": 返回纯文本 HTML 信息;包含 script 元素。

"script": 返回纯文本 JavaScript 代码。不会自动缓存结果。除非设置了"cache"参数

"json": 返回 JSON 数据 。

"jsonp": JSONP 格式。使用 JSONP 形式调用函数时,如 "myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。

"text": 返回纯文本字符串

    但是在使用时,发现加了 dataType时发现在不同服务器上可能出现js程序出错,当然是内部错误,造成程序不能正常运行,而且错误在firebug中不显示。但是服务器中返回的xml数据有时是字符格式的,有时是xml文档格式的,该怎样去随服务器应变呢?

$(document).ready(function(){
    var path='cache/orgnization.xml';
    $.post(path,{},function(xml){

       alert(typeid(xml));//用户监测返回的datatype类型,一般为string
        if(typeof(xml)=='string') {//判断当前的xml的类型,如果是字符串,则转化为xml文档格式
            xml = getXmlDoc(xml);
        }
        $(xml).find('item').each(function(index) {               
                var id = $(this).find('id').eq(0).text();
                var name = $(this).find('name').eq(0).text();
                var role = $(this).find('role').eq(0).text();
                var contact = $(this).find('contact').text();
                var tel = $(this).find('tel').text();
                var email = $(this).find('email').text();
                var html="<div align='left' style='float: left; width: 42.69%; height: 108px;  border: none; padding: 8px;'><p ><strong>"+name+"</strong><br>部门职 能:"+role+"<br>联系人:"+contact+" <br>联系电话:"+tel+"<br>邮箱:"+email+"</p></div>";
                $('#orgnization').append(html);                                       
        });
       
    });   
});

   上面的jQuery代码中用到了一个 getXmlDoc函数,现在把他贴出来。

function getXmlDoc(retXml) {
       if( retXml == "false" ){
        //can not get the customer info
            alert(retXml);
            return false;
       }else{
       
            //get the xml data
            var xmlDoc;
            if (window.ActiveXObject)
            {
                   xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
                   xmlDoc.async=true;
                   xmlDoc.loadXML(retXml);
            }
            // code for Mozilla, Firefox, Opera, etc.
            else if (document.implementation && document.implementation.createDocument)
            {
              var oParser=new DOMParser();
              xmlDoc=oParser.parseFromString(retXml,"text/xml");

            }
            else
            {
                   alert('你的浏览器不支持这个脚本!');
                   return false;
            }
       }
       return xmlDoc;
}

分享到:
评论

相关推荐

    JAVA对象转换成XML(CDATA)

    XML 元素中,"&lt;" 和 "&" 是非法的。"&lt;" 会产生错误,因为解析器会把该字符解释为新元素的开始。"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。CDATA:在标记CDATA下,所有的标记、实体引用都被忽略,而被...

    微信开发文档

    &lt;xml&gt; &lt;ToUserName&gt;&lt;![CDATA[toUser]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[fromUser]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;1348831860&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[text]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA...

    省市区表,xml省市区

    自己将数据导入到xml中的,希望有需要的朋友可以自己下载,格式为&lt;!DOCTYPE PCAroot[ &lt;!ELEMENT PCAroot (Province*)&gt; &lt;!ELEMENT Province (City*)&gt; &lt;!ELEMENT City (Area*)&gt; &lt;!ELEMENT Area (#PCDATA)&gt; &lt;!...

    微信时间开发源码

    &lt;xml&gt; &lt;ToUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/ToUserName&gt; &lt;FromUserName&gt;&lt;![CDATA[%s]]&gt;&lt;/FromUserName&gt; &lt;CreateTime&gt;%s&lt;/CreateTime&gt; &lt;MsgType&gt;&lt;![CDATA[%s]]&gt;&lt;/MsgType&gt; &lt;Content&gt;&lt;![CDATA[%s]]&gt;&lt;/Content&gt; ...

    上传xml文档

    &lt;preconditions&gt;&lt;![CDATA[1.使用udp_bi用户在PLSQL正常登陆UAT数据库&lt;br&gt; (UAT数据库IP: 10.0.13.178)&lt;br&gt; 2.数据库脚本已下载至本地环境]]&gt;&lt;/preconditions&gt;&lt;importance&gt;&lt;![CDATA[2]]&gt;&lt;/importance&gt;&lt;steps&gt; &lt;step&gt;

    一个简单的xml文件

    xml version="1.0" encoding="GBK"?&gt; &lt;!DOCTYPE 联系人列表[ &lt;!ENTITY content "某公司部分联系人信息"&gt; &lt;!ELEMENT 联系人列表 (说明,联系人)&gt; &lt;!ELEMENT 联系人 (姓名,ID,公司,电话,地址)&gt; &lt;!ELEMENT 姓名 ...

    C#读取XML的CDATA节点内容实例详解

    首先看实例代码: 昨天读取了以下XML, ...&lt;param type=XML key=data&gt; &lt;![CDATA[ &lt;Response&gt; &lt;Execution&gt; &lt;Status code=0 sql_code=0 description=执行成功!/&gt; &lt;/Execution&gt; &lt;ResponseContent&gt; &lt;Paramet

    Mybatis 中的&amp;lt;![CDATA[ ]]&amp;gt;浅析

    本文给大家解析使用&lt;![CDATA[ ]]&gt;解决xml文件不被转义的问题, 对mybatis 中的&lt;![CDATA[ ]]&gt;相关知识感兴趣的朋友一起看看吧

    asp微信开发者回复代码

    gz="&lt;xml&gt;" &_ "&lt;ToUserName&gt;&lt;![CDATA["&fromusername&"]]&gt;&lt;/ToUserName&gt;" &_ "&lt;FromUserName&gt;&lt;![CDATA["&tousername&"]]&gt;&lt;/FromUserName&gt;" &_ "&lt;CreateTime&gt;"&now&"&lt;/CreateTime&gt;" &_ "&lt;MsgType&gt;news&lt;/MsgType&gt;" &_...

    包含CDATA的 字符串转换成xml

    本文档包含了一个完整的实例,可以实现含有CDATA 的字符串转换成xml

    php生成xml时添加CDATA标签的方法

    主要介绍了php生成xml时添加CDATA标签的方法,实例讲述了php操作XML文件的技巧,非常具有实用价值,需要的朋友可以参考下

    xml入门教程/xml入门教程

    2.xml文件是由元素和元素的内容以及属性组成的,一个xml文件中只能有一个根元素,标签和标签的内容加在一起叫作一个元素。xml是大小写 敏感的,只能以字母或下划线开头。 字符转义 &lt; 代表 "&lt;" , &gt; 代表 "&gt;" ,...

    android程序读取网上xml文件

    用android程序读取网上xml文件,这个xml文件中包含了&lt;!CDATA&gt;

    异构系统xml交互程序

    本软件基于工作需要而开发,主要特点采用java开发,可在绝大多数平台使用,可灵活订制数据抽取后xml文件格式,可配置是否采用zip进行压缩传输,可灵活配置解析xml文件的某类节点信息。 欢迎相互交流,QQ:37605250,...

    XML:标签CDATA用法

    XML:标签CDATA用法 XML:标签CDATA用法

    zyXML解析类模块源码

    zyXML 是一个轻便、小巧的,纯易语言代码来解析XML的模块。优点:。1、不依赖任何DLL、支持库、系统组件(Microsoft.XMLDOM等对象)。2、支持UTF-8 、UTF-16 等编码。3、支持 XPath 语法来查询节点。4、支持 CDATA ...

    asp.net自带类读写xml中的CDATA

    asp.net3.5及以上版本自带序列化类读写XML中的cdata数据(JSON数据格式),看代码就明白。

    android SaxParser 解析 CDATA

    android 使用saxparser 解析&lt;![CDATA[ ]]&gt;标签数据。 见附件实例

    微信小程序支付(已调试通过).rar

    微信小程序支付JSAPI交易类型 已通过测试 返回例子如下: &lt;xml&gt;&lt;return_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/return_code&gt; &lt;return_msg&gt;&lt;![CDATA[OK]]&gt;&lt;/return_msg&gt; &lt;result_code&gt;&lt;![CDATA[SUCCESS]]&gt;&lt;/result_code&gt;

Global site tag (gtag.js) - Google Analytics