如何解析这个XML ajax响应?

问题描述 投票:2回答:1

我试图通过jQuery从Java servlet或action中检索aj来解析一些数据。这是我最糟糕的一周,一切都是香蕉。这是我的XML响应:

<ajax-response>
    <response>
        <item>
            <name>ok</name>
            <value>true</value>
        </item>
        <item>
            <name>menuDiv</name>
            <value> Some HTML Menu</value>
        </item>
    </response>
</ajax-response>

我试图得到“一些HTML”的“menuDiv”值:

$.ajax({
    type: "GET",
    url: basePath+'mostrarMenu.do',
    dataType: "xml",
    success: parseXml
});

function parseXml (xml) {
    var menu = $(xml).find("item");
    menu.each(function(i, value) {
        alert(value[0]);
        if (value == 'menuDiv') {
            alert("Esto es el menudiv:"+value);
        }

        if (( value != null ) || ( value != '') || ( value != ' ')) {
            $('#menuDiv').append(value);
        } 
        else 
            alert ("anda el else");
    });

alert(value[0]);if ( value == 'menuDiv') {什么都不返回,最后一个if使菜单可见,但其他项目也是如此,就像在一个漂亮的菜单前出现的true字。

任何帮助或建议将非常感激。谢谢。

编辑2:

有了这个功能,现在我得到纯文本(不是渲染的html)和所有“<items>”:

function parseXml (xml) {
        var menu = $(xml).find("item");
        menu.each(function(i, value){
            if(( value != null ) || ( value != '') || ( value != ' ')){
                $('#menuDiv').append($(value));
            } else alert ("anda el else");
        });
     }
    }

我有更改dataType:'html',我的菜单是可见的,但我一直试图在我的XML上只选择一个ITEM而不是所有这些...

jquery xml ajax parsing
1个回答
0
投票

第一个问题是当你做find("item")时,返回的是整个子树:

    <item>
        <name>ok</name>
        <value>true</value>
    </item>

所以你的循环需要改为:

if ($(value).find("name")[0].innerHTML == 'menuDiv') {
    alert("Esto es el menudiv:"+value);
}

然后可以在value.find("value")[0].innerHTML中获取值“Some HTML Menu”

我在这里没有做任何错误检查(具体来说,我假设find返回一个至少有一个元素的非null数组),但你可以自己添加它。

© www.soinside.com 2019 - 2024. All rights reserved.