微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery将XML标记转换为大写

我有一个 AJAX请求,它返回一个 XML字符串,我想将其注入DOM.我的功能看起来像
$.ajax({
    type: 'POST',url: "myrequest",data: postdata,datatype: 'json',success: function (arguments) {
        newxmlstring = arguments.newxml;
        oldnode = $("someselector specified in the arguments passed");
        oldnode.replaceWith(newxmlstring);
    }
  });

这有效,但似乎replaceWith函数将所有nodeName映射到服务器发送的响应的大写版本.我假设这是一个尝试使用jQuery来处理XML的怪癖?

因此,例如,如果响应字符串是< data> asdf< / data>当我访问$(newnode)[0] .nodeName时,我得到’DATA’.

有人知道如何处理新的XML,同时保留nodeName的小写?

编辑:我的响应是JSON,因为它包含新的xml字符串和一些关于新xml节点附加位置的其他数据.所以我更愿意保留数据类型:’json’,如果可能的话.

解决方法

From this answer

In XML (and XML-based languages such
as XHTML),tagName preserves case. In
HTML,tagName returns the element name
in the canonical uppercase form. The
value of tagName is the same as that
of nodeName.

一些搜索表明很多人都遇到过这个问题,尤其是选择器和XML(jQuery的find()区分大小写,而find()中使用的选择器是小写的).

Here’s a function其他人正在使用将字符串转换为可能适合您的XML:

$.text2xml = function(sXML) { 
    // NOTE: I'd like to use jQuery for this,but jQuery makes all 
    // tags uppercase 
    //return $(xml)[0]; 
    var out; 
    try{ 
        var dXML = ($.browser.msie)?new ActiveXObject("Microsoft.XMLDOM"):new DOMParser(); 
        dXML.async = false; 
    }catch(e){ throw new Error("XML Parser Could not be instantiated"); }; 
    try{ 
        if($.browser.msie) out = (dXML.loadXML(sXML))?dXML:false; 
        else out = dXML.parseFromString(sXML,"text/xml"); 
    } 
    catch(e){ throw new Error("Error parsing XML string"); }; 
    return out;
}

原文地址:https://www.jb51.cc/jquery/178954.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐