好吧,这个问题让我很生气。我认为我缺乏这方面的知识。
我正在尝试解析一个XML响应,一切正常,但问题是当我试图访问对象时。我把它们当作数组来对待,我总是收到"undefined":
<?xml version="1.0" encoding="UTF-8" ?>
<ajax-response>
<response>
<item>
<name><![CDATA[ok]]></name>
<value><![CDATA[true]]></value>
</item>
<item>
<name><![CDATA[menuDiv]]></name>
<value><![CDATA[Some HTML value]]></value>
</item>
</response>
</ajax-response>
下面是Jquery代码:
xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$item = $xml.find( "item" );
alert($item.length);
$item.each(function(key, value){
alert(typeof value);
});
这行alert(typeof value);
返回"object“。但是,如果我执行value[0]
或$value[0]
,它会返回"undefined“。
我想从对象中获得“一些HTML值”。
发布于 2012-05-16 21:28:03
传递给迭代函数的value
对象将是一个XML节点,在本例中是一个标记名为item
的Element
。因此,您可以通过从它获取属性,或者查看它所拥有的任何子TextNode
中的文本来从中检索信息。
您可以将元素包装在jQuery实例中,并使用jQuery的attr
获取属性,使用text
获取文本。
我想从对象中获取“一些HTML值”。
那就是text
--下面是一个例子:
$item.each(function(key, value){
var $value = $(value);
alert(typeof $value.text());
});
下面是一个遍历每个item
的子级的完整示例:Live copy | source
jQuery(function($) {
var xml =
'<?xml version="1.0" encoding="UTF-8" ?>' +
'<ajax-response>' +
'<response>' +
'<item>' +
'<name><![CDATA[ok]]></name>' +
'<value><![CDATA[true]]></value>' +
'</item>' +
'<item>' +
'<name><![CDATA[menuDiv]]></name>' +
'<value><![CDATA[Some HTML value]]></value>' +
'</item>' +
'</response>' +
'</ajax-response>';
var xmlDoc = $.parseXML( xml ),
$xml = $( xmlDoc ),
$item = $xml.find( "item" );
display($item.length);
$item.each(function(key, value){
$(value).children().each(function(clave, valor) {
display("$(valor).text() = " + $(valor).text());
});
});
function display(msg) {
$("<p>").html(msg).appendTo(document.body);
}
});
或者,如果您只想获取与包含文本"menuDiv"
的name
同级的value
,则相关的位是:
var menuDivText = $xml.find("item name:contains(menuDiv)").next().text();
Live example | source
https://stackoverflow.com/questions/10619552
复制相似问题