【问题标题】:getElementsbyTagName is not a function XMLHttpRequestgetElementsbyTagName 不是函数 XMLHttpRequest
【发布时间】:2016-10-07 00:19:59
【问题描述】:

我有问题。

我正在调用一个 Web 服务,它给了我一个 XML 响应,所以我使用了 XMLHttpRequest。 现在我想访问存储在一个节点中的一个值。

这是我的代码:

xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4) {
                    if (xmlhttp.status == 200) {

                        console.log("response : " + xmlhttp.responseXML.getElementsbyTagName("return")[0].childNodes[0].nodeValue);
                        ...

我确定 return 节点存在并且它包含某些内容,因为我的 XML 响应必须如下所示:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
   <soap:Body>
      <ns2:carreNombreResponse xmlns:ns2="http://mathsutility.test.com/">
         <return>16.0</return>
      </ns2:carreNombreResponse>
   </soap:Body>
</soap:Envelope>

但问题是当我的程序执行console.log 行时,它返回一个错误:

 TypeError: xml.getElementsbyTagName is not a function
    at XMLHttpRequest.xmlhttp.onreadystatechange...

我已经提到我正在使用 Typescript 和 Angular 2(但通常它不应该改变基本的 js 功能)。

有解决问题的办法吗?

【问题讨论】:

  • By 也需要大写。
  • 您检查过 xmlhttp.responseXML 吗?如果请求中的标头没有正确设置,那么这将为空。
  • @NiettheDarkAbsol 天哪,原来是这样。我有点累了:)谢谢!

标签: javascript angular xmlhttprequest


【解决方案1】:

嗨,Calliste,这是因为 xml 不是 DOMElement。 它只是一个xml数据类型

我建议你使用 xml 解析函数而不是使用 DOM 函数

jquery 有一个很好的方法来完成这项工作

它被称为

PaseXML https://api.jquery.com/jQuery.parseXML/

【讨论】:

  • 好的,感谢您的回复。我会看看 jquery 并让你知道它是否有效。但是,不知道是否建议在angular中使用jquery?
  • 你应该能够从 xmlhttp 获取一个 DOM 对象。 developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/…
  • 它是伙伴,实际上,即使 Angular 引擎内部也有一个小的 jquery,但大多数现实世界的应用程序,使用很少的基于 jquery 的 sn-ps 和库。最漂亮的部分是,这与 jquery 中内置的 angular 不冲突,并且不需要额外的配置。
猜你喜欢
  • 2015-07-08
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2016-04-15
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
相关资源
最近更新 更多