Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery中的.text()方法由于某些原因不适用于xml元素_Javascript_Jquery_Xml - Fatal编程技术网

Javascript jQuery中的.text()方法由于某些原因不适用于xml元素

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(); } 它正在

我有以下javascript:

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());