有人可以解释一下为什么以下脚本不起作用?谢谢; - )
$("#getRate").on("click", function(event) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
getRates(xhttp);
}
}
xhttp.open("GET", "http://api.nbp.pl/api/exchangerates/rates/A/EUR/2016-06-02", true);
xhttp.send();
function getRates(xml) {
var xmlDoc = xml.responseXML;
document.getElementById("testRate").innerHTML = xmlDoc.getElementsByTagName("ExchangeRatesSeries")[0].getElementsByTagName("Rates")[0].getElementsByTagName("Rate")[0].getElementsByTagName("Mid")[0].childNodes[0].nodeValue;
}
});
答案 0 :(得分:0)
代码xml.responseXml将为null。因为,在请求中它将在responseText中返回值。如果希望responseXml具有值,则必须定义Content-Type is text / xml。 更新:为防止跨域您可以将responseText转换为json。您需要中间值并更改您的代码,如下所示
function getRates(xml) {
var xmlDoc = xml.responseText;
var jsonObj = eval('(' + xmlDoc + ')');
document.getElementById("testRate").innerHTML = jsonObj.rates[0].mid;
}
答案 1 :(得分:0)
似乎这个解决方案不能跨域运行...我必须首先下载文件并在本地解析它们。然后脚本工作正常。