Ajax:Probleme mit firstChild.data

flokli

Erfahrenes Mitglied
Hi,
ich habe (wieder mal) ein Problem mit Ajax.
Ich lese eine XML-Datei mit Javascript ein:
HTML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<root>
<info content="foo" worlds="bar" />
<items>
 <item key="0">
 <world>11111111</world>
 <link>aaaaaaa</link>
 <inputstr>bbbbbbbb</inputstr>
 </item>
</items>
</root>
Code:
var http_request = false;

            function makeRequest(url) {

                http_request = false;

                if (window.XMLHttpRequest) { // Mozilla, Safari,...
                    http_request = new XMLHttpRequest();
                    if (http_request.overrideMimeType) {
                        http_request.overrideMimeType('text/xml');
                    }
                } else if (window.ActiveXObject) { // IE
                    try {
                        http_request = new ActiveXObject("Msxml2.XMLHTTP");
                    } catch (e) {
                        try {
                        http_request = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e) {}
                    }
                }

                if (!http_request) {
                    alert('Giving up :( Cannot create an XMLHTTP instance');
                    return false;
                }
                waiter();
                http_request.onreadystatechange = readContents;
                http_request.open('GET', url, true);
                http_request.send(null);

            }
            function readContents(){
                if (http_request.readyState == 4) {
                    if (http_request.status == 200) {
                        var xmldoc = http_request.responseXML;
                        var root_node = xmldoc.getElementsByTagName('root').item(0);
                        //start functions
                        pasteTable(root_node);
                        unwaiter();
                    } else {
                        alert('There was a problem with the request.');
                    }
                }
            }
    function pasteTable(root_node){
        var info=root_node.getElementsByTagName('info')[0];
        var info_content=info.getAttribute('content');
        var info_worlds=info.getAttribute('worlds');
        var items=root_node.getElementsByTagName('items')[0];
        var field_servers="<table cellpadding='0' cellspacing='0' border='0'>";
        field_servers+="<tr><td width='1'>World</td><td width='100%'>Link</td></tr>";

        for(var i=0;i<items.getElementsByTagName('item').length;i++)
        {
            var item=items.getElementsByTagName('item')[i];
            field_servers+="<tr><td>"+item.getElementsByTagName('world').firstChild.data+"</td><td>Link</td></tr>";
        }

        field_servers+="</table>";
        document.getElementById('field_servers').innerHTML=field_servers;
    }
    function waiter(){
        document.getElementById('wait_small').src='images/loading.gif';
    }
    function unwaiter(){
        document.getElementById('wait_small').src='images/space.gif';
    }



waiter() und unwaiter() setzen das "Ladebildchen", die ersten Zeilen Code sind identisch mit dem aus http://www.w3clubs.com/mozdev/httprequest_test_xml.html
Jetzt hab ich aber das Problem, dass ich bei "i
tem.getElementsByTagName('world').firstChild.data" die Fehlermeldung bekomme, dass "item.getElementsByTagName('world').firstChild" keine Eigenschaften hat, da "item.getElementsByTagName('world').firstChild" "undefinied" ist.

Wo liegt mein Fehler?




edit:

Ahem. Da war ich wohl zu schnell.
[0] vergessen.
item.getElementsByTagName('world')[0].firstChild.data läuft. Trotzdem danke!
 
Zuletzt bearbeitet:
Javascript:
document.getElementsByTagName('name')
liefert dir ein array, um auf ein einzelnes Element in diesem Array zuzugreifen musst du folgendes schreiben
Javascript:
document.getElementsByTagName('name')[0].firstChild.data

lg
 
Zurück