JürgenB: Asynchrone DB-Abfrage

Beitrag lesen

Hallo Jonas,

nur eine Vermutung:

die Variable "anfrage" ist eine globale Variable, die bei jedem Aufruf von "erzeugeAnfrage" überschrieben wird. Daher überschreibt der zweite Aufruf das HTTP-Objekt des ersten Aufrufs.

Du musst auf lokale Variablen umstellen, z.B. indem du "anfrage" in "erzeugeAnfrage" als lokale Variable anlegst und an die aufrufende Funktion per 'return' übergibst. Hier mal eine ungetestete Änderung deiner Version:

function getSites (swName, lsNr) {  
  
        var sw = swName;  
        var ls = lsNr;  
        var url = "http://wsw03425/LD/php/ajaxq_sites.php?swName=" + escape(sw);  
  
  
        var anfrage = erzeugeAnfrage();  
  
  
        anfrage.open("GET", url, true);  
        anfrage.onreadystatechange = updateData;  
        anfrage.send(null);  
  
        function updateData() {  
                if (anfrage.readyState == 4) {  
                        var sites = anfrage.responseText;  
                        var siteArray = new Array();  
                        siteArray = sites.split('|');  
                        linkset[ls]='<a href="#">' + siteArray[0] + '</a>';  
                        i=1;  
                        while (siteArray[i]) {  
                                linkset[ls]+='<a href="#">' + siteArray[i] + '</a>';  
                                i++;  
                        }  
                }  
        }  
}  
  
// Erzeugt ein Object anfrage  
function erzeugeAnfrage() {  
  
  
  var anfrage;  
  
  
  try {  
    anfrage = new XMLHttpRequest();  
  } catch (versuchmicrosoft) {  
    try {  
      anfrage = new ActiveXObject("Msxml2.XMLHTTP");  
    } catch (anderesmicrosoft) {  
      try {  
        anfrage = new ActiveXObject("Microsoft.XMLHTTP");  
      } catch (fehlschlag) {  
        anfrage = null;  
      }  
    }  
  }  
  if (anfrage == null)  
    alert("Fehler beim Erzeugen des Anfrage-Objekts!");  
  
  
  return anfrage;  
  
  
}

Gruß, Jürgen