如何解析这个XML ajax响应?

时间:2012-05-15 14:58:29

标签: jquery xml ajax parsing

我正在尝试使用jQuery从Java servlet或action中检索jQuery来解析一些数据。这是我最糟糕的一周,一切都是香蕉。这是我的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>

我正试图获得“someDiv”值,即“某些HTML”:

$.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)和所有“&lt; items&gt;”:

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而不是全部...

1 个答案:

答案 0 :(得分: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

中获取“某些HTML菜单”的值

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