使用jquery解析远程xml文件

时间:2016-06-06 06:58:19

标签: jquery xml parsing

有人可以解释一下为什么以下脚本不起作用?谢谢; - )

$("#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;
  }

});

2 个答案:

答案 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)

似乎这个解决方案不能跨域运行...我必须首先下载文件并在本地解析它们。然后脚本工作正常。