Horst: (Ajax) Array erwartet, ist jedoch leer

Hallo,

die XML-Response sieht so aus (mit Perl erzeugt):

  
 print qq(  
  <?xml version="1.0" encoding="ISO-8859-1" ?>  
  <response>  
   <meta title="Speck mit Kartoffeln" url="speck.html"/>  
   <meta title="Tomatensalat" url="tomate.html"/>  
  </response>  
 );  

Das Objekt für den Ajax-Request heißt 'req' und so empfange ich die Response:
var meta = req.responseXML.documentElement.getElementsByTagName('meta');

Eigentlich erwarte ich auf meta ein Array mit 2 Elementen, aber ein alert(meta.length); behauptet das Array sei leer.

alert(meta) sagt mir, dass ein Objekt angekommen ist, der Request ist auch im Serverlog zu sehen. Rundherum scheint also alles zu passen. Warum jedoch ist das Array leer?

Viele Grüße,
Horst Haselhuhn

  1. Hallo,

    also im IE funktionierts, das Array ist leer im uralt Mozilla 1.7.11, das ist aber erstmal nicht so wichtig.

    Wer da was machen möchte, ich denke hier irgendwo bei der Objekterstellung:

      
      <script type="text/javascript">  
       var req;  
       function loadWords(url){  
        if (window.XMLHttpRequest) {  
         req = new XMLHttpRequest();  
         req.onreadystatechange = responseHandler;  
         req.open("GET", url, true);  
         req.send(null);  
        }  
        else if (window.ActiveXObject) {  
         req = new ActiveXObject("Microsoft.XMLHTTP");  
         if (req) {  
          req.onreadystatechange = responseHandler;  
          req.open("GET", url, true);  
          req.send();  
         }  
        }  
       }  
    
    

    Viele Grüße,
    Horst Haselhuhn

  2. Hallo Horst,

    var meta = req.responseXML.documentElement.getElementsByTagName('meta');

    var meta = req.responseXML.getElementsByTagName('meta');

    ist aussichtsreicher, da responseXML bereits ein document-Objekt liefert.

    Grüße,
    Thomas

    1. Hallo,

      var meta = req.responseXML.documentElement.getElementsByTagName('meta');

      var meta = req.responseXML.getElementsByTagName('meta');

      ist aussichtsreicher, da responseXML bereits ein document-Objekt liefert.

      Danke Thomas, heut' abend probiere ich das mal aus.

      Viele Grüße,
      Hotte

    2. Hi Thomas,

      var meta = req.responseXML.documentElement.getElementsByTagName('meta');

      var meta = req.responseXML.getElementsByTagName('meta');

      ist aussichtsreicher, da responseXML bereits ein document-Objekt liefert.

      Jow, und ich hab auch noch was gefunden, es lag hauptsächlich an der Zeile:

      <?xml version='1.0' encoding='ISO-8859-1' ?>

      die stand bei mir nicht ganz am Anfang, da war noch ein Tab vornedran.

      Tab raus und geht auch mit olle Mozilla, juhu!!!

      Viele Grüße,
      Hotte