Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Ajax] xmlResponse verwerken

Pagina: 1
Acties:

  • monnick
  • Registratie: December 2005
  • Niet online
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:

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:
xmlHttp.responseXML has no properties
[Break on this error] var result = xmlHttp.responseXML.getElementsByTagName("name");
Wat ik ook probeer (heb veel gezocht, en diverse oplossingen geprobeerd) ik blijf die foutmelding houden. :/ 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

Verwijderd

Je server script stuurt de verkeerde content-type, nl. text/html. Wil je responseXML gevuld krijgen dan moet je content type text/xml gebruiken.

Verwijderd

Verwijderd schreef op zondag 16 maart 2008 @ 05:59:
Je server script stuurt de verkeerde content-type, nl. text/html. Wil je responseXML gevuld krijgen dan moet je content type text/xml gebruiken.
Afhankelijk van wat je stuurt. Bij onleesbare applicatie-brei, kun je beter application/xml gebruiken. Als je bijvoorbeeld statusmeldingen doorgeeft is text/xml wel een optie.

En zoals altijd raad ik de TS aan om een standaard library te gebruiken, bijvoorbeeld Prototype of Mootools.

[ Voor 11% gewijzigd door Verwijderd op 16-03-2008 09:55 ]


  • monnick
  • Registratie: December 2005
  • Niet online
Bedankt! Een header met het contenttype meesturen was inderdaad de oplossing :)

PHP:
1
header('content-type: text/xml; charset=utf-8');