如何在javascript中处理xml数据

如何在javascript中处理xml数据,javascript,jquery,Javascript,Jquery,我是javascriptxml数据处理方面的新手。目前,我的ajax调用服务器,服务器返回xml数据,我不知道如何解析xml数据以获得一些值 我的ajax调用: $.ajax({ url: 'http://localhost:8080/someinterface/the-id', type: 'GET', async: false, dataType: 'application/xml',

我是javascriptxml数据处理方面的新手。目前,我的ajax调用服务器,服务器返回xml数据,我不知道如何解析xml数据以获得一些值

我的ajax调用:

$.ajax({
            url: 'http://localhost:8080/someinterface/the-id',
            type: 'GET',
            async: false,
            dataType: 'application/xml',
            data: {id: 43},
            success: function(data) {

                //handle the data

            },
            error: function(xhr, status, error){
                alert('error happens');
            }
         })
返回的xml数据如下所示:

<DOCUMENT>
  <AGE>16</AGE>
  <USERNAME>default user</USERNAME>
  <SECURITYID>1111</SECURITYID>
...

我在浏览器中收到警报('1'),但我没有收到警报(用户名),我不知道为什么。。。所以我在这里写了“部分解决”,所以…为什么我没有收到我的用户名警报..

使用Json数据类型,它是为与javascript一起使用而设计的

例如:

$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});

浏览器基本上会为您处理它:

success: function(data) {
  var username = $(data).find('username').text();
  // ...
}

您可以使用jquery xml解析

所以在你的成功函数中

success: function(data) {
    //xmlDoc = $.parseXML( data);
    $xml = $( data);
    $userName = $xml.find('USERNAME');  
    var uName = $userName.text();
}

在函数中使用以下代码段将XML结果字符串放入包装的jQuery集中

var xmlString = data;

//IE XML parser needs to use an ActiveXObject
if ($.browser.msie) {
    unwrappedXml = new ActiveXObject("Microsoft.XMLDOM");
    unwrappedXml.async = false;
    unwrappedXml.loadXML(xmlString);
    }
else {
    unwrappedXml = xmlString;
}

var xml = $(unwrappedXml);
xml.find(selector);

您误用了
数据类型
参数。它不应该是MIME类型。相反,它应该是其中之一:“xml”、“html”、“script”、“json”、“jsonp”或“text”。在您的例子中,“xml”(或者完全省略它,jQuery将为您猜测它):

  • (向下滚动至“dataTypeString”)
更新:

到目前为止,您的问题似乎是服务器端脚本正在崩溃,并且您甚至没有有效的XML。不管怎样,我举了一个小例子以防万一:

$.ajax({
    url: "/test.xml",
    type: "GET",
    async: false,
    dataType: "xml",
    data: {id: 43},
    success: function(data) {
        var output = "Usernames:\n";
        $(data).find("USERNAME").each(function(){
            output += "\n- " + $(this).text();
        });
        alert(output);
    },
    error: function(xhr, status, error){
        alert("error happens");
    }
})

因为这个项目需要xml数据响应,所以我现在不能使用json。好的,对不起。马伦:你用的是哪一个。jquery版本u r使用的是什么?嗨,我尝试了所有建议的方法,也尝试了在成功函数中直接发出警报,如“警报(数据)”,但在浏览器中运行时,它会调用错误函数并在错误函数中弹出警报。@Mallon:你确定你的服务器没有返回空xml吗?嗨,阿弥陀佛,我确信我的服务器返回了一个xml,因为我将带有参数的URL复制并粘贴到了浏览器中,并且浏览器正确地显示了xml数据。唯一的例外是在Firefox中,浏览器会弹出一条消息“此XML文件似乎没有任何与之相关的样式信息”。但它仍然以XML格式显示XML数据,如我在上面的帖子中所示。请尝试数据类型:“XML”而不是“application/XML”对不起,我不明白你的意思,“误用”是什么意思数据类型。我检查了你的链接,我发现文本“特别是,XML必须由服务器声明为text/XML或application/XML以获得一致的结果。”如果你检查我的帖子,我确实使用了数据类型:“application/XML”。但无论如何谢谢你:)嗨,我试着省略它,浏览器确实帮我猜到了,但这并不能解决我的问题,问题仍然存在。梅隆:请仔细阅读我的答案。我说你不能使用
数据类型:“application/xml”
,你回答说你正在使用它。对不起,我误解了你的回答。我明天会试试,然后告诉你。谢谢:)
$.ajax({
    url: "/test.xml",
    type: "GET",
    async: false,
    dataType: "xml",
    data: {id: 43},
    success: function(data) {
        var output = "Usernames:\n";
        $(data).find("USERNAME").each(function(){
            output += "\n- " + $(this).text();
        });
        alert(output);
    },
    error: function(xhr, status, error){
        alert("error happens");
    }
})