我正在尝试使用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
字一样。
非常感谢任何帮助或建议。谢谢。
使用此功能,现在我获得纯文本(未呈现的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而不是全部...
答案 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
我在这里没有做任何错误检查(具体来说,我假设find
返回一个至少有一个元素的非空数组),但你可以自己添加它。