从外部URL下载XML响应

时间:2017-12-22 07:35:04

标签: javascript

很抱歉,如果这是基本的,我是一名C ++开发人员,并负责创建一个网页......

我们使用相机,我尝试从相机下载响应,以了解它具有哪些功能。然后我尝试提取这些功能,并将我的div元素设置为可见或不可见。

    function readAlarmReactions() 
    {
      var xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4 && this.status == 200) {
          if (parseXML(xhttp.responseXML, 'Beep') == 'false')
          {
            document.getElementById("Beep").style.display = "none";
          }
        }
      };
      xhttp.open("GET", "http://172.19.50.231/ISAPI/Event/triggersCap", true);
      xhttp.send();
    }

    function parseXML(xml, request) {
      var path = "/EventTriggersCap/isSupport" + request;
      if (xml.evaluate) {
        var nodes= xml.evaluate(path, xml, null, XPathResult.ANY_TYPE, null);
        var result = nodes.iterateNext();
        if (result) {
          return result.childNodes[0].nodeValue;
        }
        return 'false';
      }
      return 'false';
    }

当我运行此代码时,我会转到xhttp.open(),但我从未到达readyState内的if (parseXML())。我该如何调试这里发生的事情?

我用来测试的HTML是一个本地文件,所以它是从硬盘运行的,如果这有任何不同。

1 个答案:

答案 0 :(得分:1)

调试这里发生的事情:

  1. 打开Firefox
  2. 单击滚动条右上角的三个垂直点。
  3. 点击“更多工具” - > '开发人员工具'
  4. 点击“来源”
  5. 在您遇到问题的JavaScript中放置一个断点。
  6. 从这里调试。
  7. 此外,您可能会研究JavaScript Promises。它们很难看,但它们是您正在寻找的更强大的解决方案。如果文件足够大并且您正在尝试处理它,那么您尝试获得的即时执行将不会发生。关于承诺的文章:

    https://developers.google.com/web/fundamentals/primers/promises