我试图通过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
字。
任何帮助或建议将非常感激。谢谢。
有了这个功能,现在我得到纯文本(不是渲染的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而不是所有这些...
第一个问题是当你做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数组),但你可以自己添加它。