Hallo!
Ich hab das Problem, dass ich innerhalb einer Funktion
|
Source code
|
1
2
3
4
5
6
7
8
|
function getLocationData(){
new Ajax.Updater('planetname', 'ajaxresponses/planet.php', {method:'post'});
new Ajax.Updater('systemname', 'ajaxresponses/systemname.php', {method:'post'});
new Ajax.Updater('systemsecurity', 'ajaxresponses/systemsec.php', {method:'post'});
new Ajax.Updater('konstellationname', 'ajaxresponses/konstellation.php', {method:'post'});
new Ajax.Updater('regionname', 'ajaxresponses/region.php', {method:'post'});
getStations();
}
|
mehrere Updater starte. (Updater: Parameter 1: ID des upzudatenden Feldes, Parameter 2: Script, das die Daten liefert, usw.)
Jezt schreibe ich in planet.php etwas in die Session, was ich in systemname.php und systemsec.php brauche. Führe ich die Funktion das zweite mal aus, ist das auch alles kein Problem, nur beim ersten mal klappt es nicht. Ich vermute es liegt daran, dass die JS Funktion die Updater so schnell durchläuft, dass das script noch mit Datenbankoperationen und in die Sessionschreiben beschäftigt ist, während die Folgenden 4 Scripts auch schon ausgeführt werden und die Daten, die diese benötigen also noch nicht in der Session stehn.
Ich hole mir in planet.php aus der Datenbank den Schlüsselwert des Systems in dem der Planet ist, schreibe den dann in die Session.
In systemname.php hole ich mir den Schlüsselwert der Konstellation in dem das System aus der Session ist, schreibe diesen in die Session, in konstellation.php hole ich den Schlüsselwert der Region in dem die Konstellation aus der Session liegt, schreibe auch diesen in die Session und brauche den Wert dann in region.php
Ich wüsste jetzt gerne, ob ihr Ideen habt, wie ich es erreichen kann, dass der zweite Updater erst erzeugt wird, wenn das erste Script durch ist und die Daten in die Session geschrieben hat.
Da ich noch neu auf dem Ajaxgebiet bin, nehme ich auch gerne Vorschläge entgegen, wie man das gleiche mit weniger Aufwandt erreichen kann. (Ist es eventuell besser alle Datenbankabfragen in ein einziges Script zu packen, die ergebnisse z.B. als csv Liste zurückzugeben und den String dann weiter mit JS auseinanderzupflücken und die Entsprechenden Felder dann manuell upzudaten?)
MfG und Danke,
bauser
EDIT: Problem wie im letzen Absatz beschrieben gelöst, d.h. die verschiedenen statements zu einem einzigen zusammengepackt, lasse nen durch semikolon getrennten string ausgeben, alles weitere übernimmt JS.