Javascript jQuery中的.text()方法由于某些原因不适用于xml元素
我有以下javascript:Javascript jQuery中的.text()方法由于某些原因不适用于xml元素,javascript,jquery,xml,Javascript,Jquery,Xml,我有以下javascript: function getMessageFromXML(xml) { alert('xml: ' + xml); alert("Text of message: " + $(xml).find('dataModelResponse').find('adminMessage').text()); return $(xml).find('dataModelResponse').find('adminMessage').text(); } 它正在
function getMessageFromXML(xml) {
alert('xml: ' + xml);
alert("Text of message: " + $(xml).find('dataModelResponse').find('adminMessage').text());
return $(xml).find('dataModelResponse').find('adminMessage').text();
}
它正在以下XML上执行:
<dataModelResponse>
<adminMessage>BARF</adminMessage>
<adminData>
<identifier>123456</identifier>
</adminData>
</dataModelResponse>
呕吐
123456
我知道由于第一个警报,XML被正确地传入,但由于某种原因,消息显示为空白。对于类似的find()查询,我使用.length修饰符验证了xml中正好有1个message和1个dataModelResponse元素,但由于某些原因,我无法让它打印出正确的消息
建议
编辑:更改了我搜索的标记名。抱歉,在两个版本之间发布。是否应该改为
'adminMessage'
?替换$(xml)。查找('dataModelResponse')。查找('message')。text()带有$(xml)的code>。查找('message')。text()代码>
jQuery.find()的文档说明:
获取当前匹配元素集中每个元素的后代,并通过选择器进行筛选
XML块的根级元素是dataModelResponse
。通过调用$(xml).find('dataModelResponse')
,您实际上是在dataModelResponse
中请求dataModelResponse
,$(xml)
之后的根节点上,即dataModelResponse
。因此,您将找不到任何类型为dataModelResponse
的子元素,因此text()
将不返回任何内容
混凝土:
console.log("Text of message: " + $(xml).text());
将记录
Text of message: BARF 123456
(这就是你想要的)
将记录
Text of message: BARF
Text of message:
及
将记录
Text of message: BARF
Text of message:
如果您使用的是jQuery 1.5,则可以编写:
alert("Text of message: " + $($.parseXML(xml)).find('adminMessage').text());
或
或
很抱歉,我没有看到消息
元素。谢谢,这就是我缺少的。谢谢,这就是我缺少的。@jwir3在IE中工作吗?我记得在IE中以这种方式使用find()存在一些问题。Ritesh:我还没有签入IE。实际上,我只使用FF,它是我自己和另外一个人的管理工具,所以如果它不起作用,可能没什么大不了的。不过,如果你感兴趣,我会查一查。是的,我改了。抱歉,正在修订中发布。
alert("Text of message: " + $($.parseXML(xml)).find('dataModelResponse > adminMessage').text());
alert("Text of message: " + $($.parseXML(xml)).find('dataModelResponse').find('adminMessage').text());