Iris: Was macht diese Funktion?

Hallo!
Ich lese mir gerade ein AJAX-Tutorial durch. Aber bei folgender Funktion bin ich stutzig geworden.

  
function ausgeben() {  
   if (http.readyState == 4) {  
      var daten = http.responseText; // das ist mir noch klar  
      daten = eval("(" + daten + ")"); // aber was hier passiert ist mir rätselhaft  
  
// Und zur Vervollständigung noch hier der Rest der Funktion  
      var liste = document.getElementById("Liste");  
      for (var i = 0; i < daten.length; i++) {  
         var link = daten[i];  
         var li = document.createElement("li");  
         var a = document.createElement("a");  
         a.setAttribute("href", link.url);  
         var txt = document.createTextNode(link.text);  
         a.appendChild(txt);  
         li.appendChild(a);  
         liste.appendChild(li);  
      }  
   }  
}  

Trotz suche im WWW habe ich nichts gefunden. Kann mir bitte jemand erklären wie diese Funktion arbeitet? Vielen vielen Dank!
Liebe Grüße, Iris!

PS: Ich poste hier noch mal den kompletten Code:

  
function ausgeben() {  
   if (http.readyState == 4) {  
      var daten = http.responseText;  
      daten = eval("(" + daten + ")");  
  
      var liste = document.getElementById("Liste");  
      for (var i = 0; i < daten.length; i++) {  
         var link = daten[i];  
         var li = document.createElement("li");  
         var a = document.createElement("a");  
         a.setAttribute("href", link.url);  
         var txt = document.createTextNode(link.text);  
         a.appendChild(txt);  
         li.appendChild(a);  
         liste.appendChild(li);  
      }  
   }  
}  

  1. Hell-O!

    daten = eval("(" + daten + ")"); // aber was hier passiert ist mir rätselhaft

    Des Rätsels Lösung liegt weiter unten:

    for (var i = 0; i < daten.length; i++) {

    Aha, Daten ist ein Array. Ein Array definiert man u.a. durch die Kurzschreibweise

    myArr = (elem1, elem2, ...);

    Nun scheint der Inhalt von http.responseText eine kommaseparierte Liste zu sein, um die eine Klammer gebaut wird. Dieser String wird anschließend als Javascript-Ausdruck interpretiert, sodass im Ergebnis die Daten aus responseText in dem Array "daten" vorliegen sollten.

    Siechfred

    --
    Ich bin strenggenommen auch nur interessierter Laie. (molily)
    Siechfreds Tagebuch || Falle Aufteilungsbescheid || RT 221 Erfurt-Altstadt i.V.
    1. Hallo,

      Aha, Daten ist ein Array. Ein Array definiert man u.a. durch die Kurzschreibweise

      myArr = (elem1, elem2, ...);

      Äh, nicht ganz. [elem1, elem2, elem3, ...] ist die besagte Kurzschreibweise.

      Klammern gibt es, um in Ausdrücken die Operatorenrangfolge zu umgehen. Bei ([elem1, elem2, elem3, ...]) sind die Klammern eher überflüssig.

      Nun scheint der Inhalt von http.responseText eine kommaseparierte Liste zu sein

      Wie gesagt eher [elem1, ... ].

      (Im Übrigen ist für so etwas XMLHttpRequest ungeeignet, dafür nutzt man JSONP. Das heißt, man bindet dynamisch ein script-Element ein, das ein externes Script lädt. Das ruft dann eine gewünschte Funktion mit gewissen Parametern auf, z.B. wie hier einem Array.)

      Mathias

      --
      »No nations, no borders.«
      SELFHTML Weblog