Этот API возвращает json по умолчанию из запроса ajax. Я знаю, похоже, он всегда возвращает XML, но вы можете проверить возвращаемый текст непосредственно перед вызовом myFunction()
и посмотреть. Попробуйте установить формат xml с помощью:
xmlhttp.open("GET", "https://start.vag.de/dm/api/v1/haltestellen/VAG/location?lon=11.06464944&lat=49.4484825&radius=450&format=xml", true);
Когда я проверяю ваш код, который работает для меня.
Кроме того, вы, вероятно, захотите в конечном итоге проверить некоторые из ваших предположений относительно возвращаемого XML. Просто с помощью
x[i].getElementsByTagName("Haltestellenname")[0].childNodes[0].nodeValue
выглядит довольно хрупким для меня.
function loadXMLDoc() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "https://start.vag.de/dm/api/v1/haltestellen/VAG/location?lon=11.06464944&lat=49.4484825&radius=450&format=xml", true);
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) { myFunction(this); }
};
xmlhttp.send();
}
function myFunction(xml) {
var i;
var xmlDoc = xml.responseXML;
var table="<tr style='padding-bottom:5px;padding-top:5px;background-color:white;position:sticky;top:49px'><th style='text-align:left'>Fahrzgnr.</th><th style='text-align:left'>Linie</th><th style='text-align:left'>Start</th><th style='text-align:left'>Startzeit</th><th style='text-align:left'>Ziel</th><th style='text-align:left'>Endzeit</th><th style='text-align:left'>Verlauf</th></tr>";
var x = xmlDoc.getElementsByTagName("Haltestellen");
for (i = 0; i <x.length; i++) {
var Haltestellenname = x[i].getElementsByTagName("Haltestellenname")[0].childNodes[0].nodeValue;
var VGNKennung = x[i].getElementsByTagName("VGNKennung")[0].childNodes[0].nodeValue
table += "<tr><td>" + Haltestellenname + "</td><td>" + VGNKennung + "</td></tr>";
}
document.getElementById("fahrten-tabelle").innerHTML = table;
}
loadXMLDoc();
<table style="width:100%" id="fahrten-tabelle"></table>