首页 > 解决方案 > XML 响应文本未定义

问题描述

我正在调用外部服务器,并收到带有数据的有效响应。如果我将这些数据转储到其中,console.log()我可以看到我正在寻找的数据。但是返回的数据是 XML,如果我尝试getElementsByTagName在响应文本上使用该方法,则会收到错误消息Uncaught TypeError: searchResults.getElementsByTagName is not a function。我检查并且searchResults未定义,我假设这是我的问题,我只是不确定如何解决它。

function getBggData() {
  var searchTerm = document.getElementById("searchTerm").value;
  // console.log("Search Term = " + searchTerm);
  var httpURL = "https://www.boardgamegeek.com/xmlapi2/search?type=boardgame,boardgameexpansion&query=" + searchTerm
  // console.log("URL used is = " + httpURL);
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      displayData(this);
    }
  };
  xhttp.open("GET", httpURL, true);
  xhttp.send();
};

function displayData(xml) {
  var i;
  var searchResults = xml.responseText;
  console.log(searchResults.type);
  console.log(searchResults);
  var table = "<tr><th>Game</th><th>Year Released</th></tr>";
  var x = searchResults.getElementsByTagName("item");
  document.getElementById("resultsHeader").innerHTML = "Search Results = " + x + " items.";
  document.getElementById("searchResults").innerHTML = table;
};

标签: javascripthtml

解决方案


你可以这样做,

var parser = new DOMParser();
var xmlDoc = parser.parseFromString(xml,"text/xml");
console.log(xmlDoc.getElementsByTagName("title")[0]);

在这里,我们正在解析 xml 并将其获取到变量 xmlDoc


推荐阅读