hi,

Ik heb volgende json terug van een pagina
{"Ok":true,"aantalDB":8,"aantalfiles":8,"data":[{"lied":"Hallo Hallo","performer":"Corrie Van Gorp","sn":"DNCD 3333","d":"1","n":"1","titel":"Dino's Superfeest CD"},{"lied":"Polonaise Hollandaise (Polon\u00e4se Blankene","performer":"Arie Ribbens","sn":"DNCD 3333","d":"1","n":"2","titel":"Dino's Superfeest CD"},{"lied":"'S Nachts Na Twee\u00ebn","performer":"De Havenzangers","sn":"DNCD 3333","d":"1","n":"3","titel":"Dino's Superfeest CD"},{"lied":"Bij Ons Staat Op De Keukendeur","performer":"De Twee Pinten","sn":"DNCD 3333","d":"1","n":"4","titel":"Dino's Superfeest CD"},{"lied":"'K Heb Hele Grote Bloemkoole","performer":"Andr\u00e9 Van Duin","sn":"DNCD 3333","d":"1","n":"5","titel":"Dino's Superfeest CD"},{"lied":"Sophia Loren","performer":"Jack De Nijs","sn":"DNCD 3333","d":"1","n":"6","titel":"Dino's Superfeest CD"},{"lied":"Ammenooitnie","performer":"Gebroeders Grimm","sn":"DNCD 3333","d":"1","n":"7","titel":"Dino's Superfeest CD"},{"lied":"Het Leven Is Goed In M'N Brabantse Land","performer":"Oh Sixteen Oh Seven","sn":"DNCD 3333","d":"1","n":"8","titel":"Dino's Superfeest CD"}]}

de json staat in variable js.
Nu wil ik door de gegevens lopen maar dat lukt me niet.

let songs = JSON.parse(js);
let lijst = document.getElementById("lijst");
if(songs.Ok) {//ook geprobeerd met songs['Ok']
    for(i=0;i<songs.aantalfiles;i++) {
        let li = document.createElement("li");
        li.appendChild(document.createTextNode(songs[i]['lied']) );
        lijst.appendChild(li);
    }
}


Wat doe ik fout?

Jan
Zoiets?

<ul id="lijst">
</ul>

<script>

var lijst = document.getElementById("lijst");
if( songs.Ok )
{
	for (var i = 0; i < songs.data.length; i++)
	{
		song = songs.data[i];
		var node = document.createElement("li");
		var textnode = document.createTextNode(song.lied + " (" + song.performer + ")");
		node.appendChild(textnode);
		lijst.appendChild(node);
	}
}

</script>
Nee. :( Alle gegevens zijn "undefined"

Song is ok maar Ok, data en de rest niet
Geen foutmelding in de console? Doe anders gewoon even een console.log(songs).
Geen foutmelding, maar blijkbaar zet js de gegevens niet om. als ik de string handmatig invoer lukt het wel???

Ik maak de string in php met deze code:
echo json_encode(array('Ok'=>true, 'aantalDB'=>mysqli_num_rows($result), 'aantalfiles'=>$aantal, 'data'=>$a));

$a is de info.
Ik vermoed problemen met de enkele aanhalingstekens.

Jan
Dit werkt bij mij (Van Dino's hetb ik Dino\'s gemaakt) :

<script>

js = '{"Ok":true,"aantalDB":8,"aantalfiles":8,"data":[{"lied":"Hallo Hallo","performer":"Corrie Van Gorp","sn":"DNCD 3333","d":"1","n":"1","titel":"Dino\'s Superfeest CD"},{"lied":"Polonaise Hollandaise (Polon\u00e4se Blankene","performer":"Arie Ribbens","sn":"DNCD 3333","d":"1","n":"2","titel":"Dino\'s Superfeest CD"},{"lied":"\'S Nachts Na Twee\u00ebn","performer":"De Havenzangers","sn":"DNCD 3333","d":"1","n":"3","titel":"Dino\'s Superfeest CD"},{"lied":"Bij Ons Staat Op De Keukendeur","performer":"De Twee Pinten","sn":"DNCD 3333","d":"1","n":"4","titel":"Dino\'s Superfeest CD"},{"lied":"\'K Heb Hele Grote Bloemkoole","performer":"Andr\u00e9 Van Duin","sn":"DNCD 3333","d":"1","n":"5","titel":"Dino\'s Superfeest CD"},{"lied":"Sophia Loren","performer":"Jack De Nijs","sn":"DNCD 3333","d":"1","n":"6","titel":"Dino\'s Superfeest CD"},{"lied":"Ammenooitnie","performer":"Gebroeders Grimm","sn":"DNCD 3333","d":"1","n":"7","titel":"Dino\'s Superfeest CD"},{"lied":"Het Leven Is Goed In M\'N Brabantse Land","performer":"Oh Sixteen Oh Seven","sn":"DNCD 3333","d":"1","n":"8","titel":"Dino\'s Superfeest CD"}]}';



</script>

<ul id="lijst">
</ul>

<script>

songs = JSON.parse(js);

var lijst = document.getElementById("lijst");
if( songs.Ok )
{
    for (var i = 0; i < songs.data.length; i++)
    {
        song = songs.data[i];
        var node = document.createElement("li");
        var textnode = document.createTextNode(song.lied + " (" + song.performer + ")");
        node.appendChild(textnode);
        lijst.appendChild(node);
    }
}

</script>


[size=xsmall]Toevoeging op 31/03/2019 14:40:59:[/size]

Ik zie op de interwebs dat het Polonäse Blankenese moet zijn. En er ontbreekt een ) achter die titel.

http://www.45cat.com/record/2050735

Reageren