【发布时间】: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 元素(如<Dataset>)的默认操作是不输出任何内容并继续前进。由于您的 XML 中没有其他文本,因此浏览器不显示任何内容。按设计工作。如果您希望将 XML 像纯文本一样显示,请改为分配给div.textContent属性。
标签: javascript html ajax xml api