Struppi: globale/lokale Variablen

Beitrag lesen

Ich habe das Problem das eine Variable die ich unbedingt global brauche

Nein, du möchtest nur zum richtigen Zeitpunkt Zugriff auf eine Variabel haben.

function complete(){
switch (request.readyState){
case 0:
case 1:
case 2:
case 3: return;
case 4: out = request.responseText; break;

}
  alert(out);
}

complete wird ausgeführt wenn der Request erfolgt und nur dann wird der variabel out ein Wert zugewiesen.

alert(out);

Dieses alert() erfolgt viel früher, da ist out undefniert.

PS beim ersten alert wird der Text korrekt wiedergegeben, beim Zweiten wird
gar nichts angezeigt und die Variable zuvor mit "var out = null;" zu
deklarieren wirft "Null" zurück.

Es kommt nicht auf zuvor und danch an, sondern auf die Reihenfolge der Ausführung und der Code in der Funktion complete() kommt erst am Schluss.

Du musst versuchen von einer linearen Denkweise wegzukommen, JS ist Eventstrukturiert, d.h. viele Dinge passieren nebenläufig und bei AJAX ist das ganz besonders der Fall.

Wenn du also die Variabel out für irgendwas brauchst, musst du dies in der Funktion complete() tun an keiner anderen Stelle.

Struppi.