Mikähän tässä on vikana kun ei lue json tiedostoa? Koodi muokattu toimivaan mallipohjaan.
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Tehtävä4</title>
</head>
<body>
<div id="texthere"></div>
<!-- 1. Määritellään div, jonka sisään tulostus tehdään kohdassa 6 -->
<script>
var xmlhttp = new XMLHttpRequest();
var url = "https://api.citybik.es/v2/networks/citybikes-helsinki";  // 2. url, josta data luetaan
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var myArr = JSON.parse(xmlhttp.responseText);
        myFunction(myArr); // 3. tarkistetaan, yhteys ja määritellään uusi funktio, jota kutsutaan löydetyllä datalla.
    }
}
xmlhttp.open("GET", url, true); // 4. avataan url
xmlhttp.send();
function myFunction(arr) { // 5. funktio, jossa toiminnallisuus
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
        out += arr[i].name + " " +
        arr[i].free_bikes + '<br>';
    }
    document.getElementById("texthere").innerHTML = out; // 6. HTML-elementti, johon tulostus tehdään
}
</script>
</body>
</html>Mun nähdäkseni se lukee json-tiedoston ihan hienosti. Rivillä 21 myArr -sisältö vastaa ihan hyvin ladattua jsonia.
Sen sijaan myFunction koodi yrittää lukea annettua objektia kuin se olisi taulukko, vaikka se ei ole.
Koodin saisi luultavasti toimimaan korvaamalla rivin 21 seuraavalla:
myFunction(myArr.network.stations); // 3. tarkistetaan, yhteys ja määritellään uusi funktio, jota kutsutaan yhdellä löydetyn datan taulukoista.
Jep, kiitos. Alkoi heti toimimaan. :)
Uusi kysymys. Muutin tuota niin, että scripti on omassa tiedostossaan sekä tieto haetaan xml-muodossa. Osaatteko sanoa miksi ei toimi?
index.html:
<html>
<head>
    <meta charset="utf-8">
</head>
<body onload="myFunction();">
    <div id="texthere"></div>
    <script src="pyoratilanne.js"></script>
</body>
</html>pyoratilanne.js:
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "https://api.digitransit.fi/routing/v1/routers/hsl/bike_rental", true); // Avaa linkki
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        var myArr = xmlhttp.responseXML;
        myFunction(myArr.BikeRentalStationList.stations.stations); // Määritellään uusi funktio, jota kutsutaan löydetyllä datalla.
    }
}
xmlhttp.send();
function myFunction(arr) {
    var out = "";
    var i;
    for(i = 0; i < arr.length; i++) {
        out += arr[i].name + '<br>' + " Tyhjiä paikkoja: " +
        arr[i].empty_slots + " Vapaita pyöriä: " +
        arr[i].free_bikes + '<br>' + '<br>';
    }
    document.getElementById("texthere").innerHTML = out; // Teksti sivuille
}Aihe on jo aika vanha, joten et voi enää vastata siihen.