【问题标题】:Parsing an XML file with XMLHttpRequest.responseText won't display on div使用 XMLHttpRequest.responseText 解析 XML 文件不会显示在 div 上
【发布时间】:2015-01-04 16:17:54
【问题描述】:

我正在尝试从 API 链接解析 XML 文档....

但是,当我尝试使用代码 div.innerHTML=request.responseText 时,它不会将文本解析到 div 中,这与在之前的行中调用的警报中所做的不同。

<div id="myDiv"></div>

<script>
var url = 'http://www.bea.gov/api/data/?&userID=XXXXX&method=GETDATASETLIST&ResultFormat=XML&';
    div = document.getElementById("myDiv");

request = new XMLHttpRequest();
request.open('GET', url, true);
request.onload = function() {
    data = request.responseText;
    alert(data);
    div.innerHTML = data;
};
request.send();
</script>

alert 功能有效但 div.innerHTML 功能不适用于 request.responseText 的任何原因?

【问题讨论】:

  • 您误用了“解析”一词 (see)。您似乎不想在这里解析任何内容。解释当你做div.innerHTML = request.responseText时你期望发生什么。
  • 抱歉误用。我希望它将整个 XML 文档复制为字符串并更新 html div 元素的内容。由于警报功能似乎能够做到这一点,我预计以上就足够了。这是警报中 XML 字符串的 sn-p。
  • 那个 xml 字符串中没有文本,那么您的期望是什么?看起来您需要遍历属性并转换为 html。如果是这种情况,首先看看 API 是否有 JSON 输出,使用起来会容易一些(虽然不是很重要)
  • XML 格式是业务需求。 alert(request.responseText) 能够显示上述示例 xml 内容。但是,当使用 div.innerHTML = request.responseText 显示与警报相同的 xml 内容作为字符串时,它不起作用?
  • 如果你分配给div.innerHTML,你会强制浏览器将字符串解释为HTML。未知 HTML 元素(如&lt;Dataset&gt;)的默认操作是不输出任何内容并继续前进。由于您的 XML 中没有其他文本,因此浏览器不显示任何内容。按设计工作。如果您希望将 XML 像纯文本一样显示,请改为分配给 div.textContent 属性。

标签: javascript html ajax xml api


【解决方案1】:
var url = 'http://www.bea.gov/api/data/?&userID=XXXXX&method=GETDATASETLIST&ResultFormat=XML&';
var div = document.getElementById("myDiv");
request = new XMLHttpRequest();
request.open('GET', url, true);
request.onload = function() {
    data = request.responseText;
    console.log(data);
    div.textContent = data;
};
request.send();

这应该可行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多