Ik ben wat aan het experimenten met Ajax. Ben vrij nieuw met JavaScript en XML maar het leek me een mooie uitdaging. Als hulpmiddel heb ik een boek waar ik al wat dingetjes uit gedaan heb, nu probleem ik zelf wat te maken.
Ik heb een listbox waar ik kan selecteren of een game Online, de mogelijke waardes zijn 'yes' of 'no' zijn. Deze waarden stuur ik na onchange() door aan een PHP scriptje dat alle games uit de DB gaat afhankelijk van of 'yes' of 'no' is meegestuurd. Vervolgens maak ik van de spellen (+ andere informatie) een XML string die ik retourneer aan de clientside.
De bedoeling is om mbv. Javascript de games te listen in een andere listbox. Hiervoor gebruik ik het responseXML object op mijn xmlHTTP object. Het probleem is alleen dat ik niet weet hoe ik de XML moet parsen (?) zodat ik de game-naam krijg, dat is het gegeven dat ik aan de listbox wil toevoegen.
In een voorbeeld in mijn boek doen ze dit als volgt:
Echter als ik een soort gelijk script maak krijg ik telkens in FireBug:
Verder ligt het niet aan het PHP script of de XML-structuur (zie onderaan post), want die zijn correct voor zo ver ik weet. Als ik het antwoord van de server als responseText ophaal ipv responseXML krijg ik keurig een XML sheet. En wanneer ik de sheet validate op W3C krijg ik geen foutmeldingen oid.
Ik hoop dat iemand mij kan helpen!
Scriptje draaiende: http://www.tomrunia.nl/ajax/php_xml.html
Voorbeeld van XML-antwoord van server: http://www.tomrunia.nl/ajax/games.xml
Ik heb een listbox waar ik kan selecteren of een game Online, de mogelijke waardes zijn 'yes' of 'no' zijn. Deze waarden stuur ik na onchange() door aan een PHP scriptje dat alle games uit de DB gaat afhankelijk van of 'yes' of 'no' is meegestuurd. Vervolgens maak ik van de spellen (+ andere informatie) een XML string die ik retourneer aan de clientside.
De bedoeling is om mbv. Javascript de games te listen in een andere listbox. Hiervoor gebruik ik het responseXML object op mijn xmlHTTP object. Het probleem is alleen dat ik niet weet hoe ik de XML moet parsen (?) zodat ik de game-naam krijg, dat is het gegeven dat ik aan de listbox wil toevoegen.
In een voorbeeld in mijn boek doen ze dit als volgt:
JavaScript:
1
2
3
4
5
6
7
8
| var result = xmlHttp.responseXML.getElementsByTagName("name"); var option = null; for(var i=0; i<result.length; i++) { option = document.createElement("option"); option.appendChild(document.createTextNode(result[i].firstChild.nodeValue)); games.appendChild(option); } |
Echter als ik een soort gelijk script maak krijg ik telkens in FireBug:
Wat ik ook probeer (heb veel gezocht, en diverse oplossingen geprobeerd) ik blijf die foutmelding houden.xmlHttp.responseXML has no properties
[Break on this error] var result = xmlHttp.responseXML.getElementsByTagName("name");
Ik hoop dat iemand mij kan helpen!
Scriptje draaiende: http://www.tomrunia.nl/ajax/php_xml.html
Voorbeeld van XML-antwoord van server: http://www.tomrunia.nl/ajax/games.xml