Hi!
Bisher ergaben deine Bemühungen nur den Eindruck ab, dass du irgendwas verkehrt zu machen scheinst. Aber was du das konkrete Problem ist, zu dem du eine Lösung gesucht hast, ist (für mich) bisher nicht nachvollziehbar.
Wenn mir das inzwischen doch selbst und richtig klar geworden ist, ich also recht zwischen deinen Zeilen im anderen Faden lese, fehlte dir lediglich die Abfrage des readyState im onreadystatechanged-Eventhandler. Du hast einfach ungeachtet des readyState die Response zu verarbeiten versucht, was misslang, weil sie zunächst noch nicht da ist. Du musst deinen Eventhandler so lange aufrufen lassen, bis readyState == 4 ist. Dann kannst du die Response sofort und ohne weitere Verzögerungen verarbeiten.
if (xhr.readyState == 4){
if (xhr.status == 200) { callback(xhr.responseText;) }
else { aobj.errstr = 'Server anwortet nicht'; }
}
Es ist rein technisch nicht erforderlich, das callback(xhr.responseText); ins Spiel zu bringen.
if (xhr.readyState == 4) {
if (xhr.status == 200) {
foo = readParams(xhr.responseText); // stellvertretend für deine erste Zeile der callback-Funktion
...
} else{ aobj.errstr = 'Server anwortet nicht'; }
}
Der Callback kann aus anderen strukturellen Gründen sinnvoll sein, aber er ist nicht zwingend notwendig.
Lo!