Hallo,
// test.js
function MACHDAS() {
var jetzt = new Date();
jetzt = jetzt.getTime();
var blubb = "was geht ab";AJAX = new XMLHttpRequest();
AJAX.open('GET','123.cgi?do='+jetzt,true);
AJAX.onreadystatechange = function () {
if (AJAX.readyState == 4) {
blubb = AJAX.responseText;
}
}AJAX.send(null);
return blubb;
}
>
> in return bleibt stehen "was geht ab".
ja sicher, du wartest die Antwort des AJAX-Requests ja auch gar nicht erst ab. Du gibst den Request mit AJAX.send() sozusagen in Auftrag, drehst dich dann auf dem Absatz um und gehst (return). Die anonyme Eventhandler-Funktion, die du vorher noch korrekt registriert hast (AJAX.onreadystatechange) wird zwar irgendwann aufgerufen, wenn die Antwort kommt, und ändert noch den Wert der lokalen Variablen blubb innerhal von MACHDAS(). Aber das bekommst du gar nicht mehr mit.
> 123.cgi liefert korrekt.
Das glaube ich gern, spricht auch nichts dagegen.
> wenn ich den selben request also direkt in die html zwischen <script></script> schreibe, dann wird mir der richtige wert geliefert.
Das ist wiederum erstaunlich - wenn das so ist, hat das aber mit Sicherheit andere Gründe, die wir aus dem bisher Gesagten noch nicht erkennen können. Theoretisch kann es nämlich nicht funktionieren, weil die Ablauflogik nicht stimmt.
Ciao,
Martin
PS: Ich spiel gern 'ne Runde Pool mit. :-)
--
Die Zeit, die man zur Fertigstellung eines Projekts wirklich braucht, ist immer mindestens doppelt so lang wie geplant.
Wurde dieser Umstand bei der Planung bereits berücksichtigt, gilt das Prinzip der Rekursion.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(