| |
|
|
 |
prototype, Ajax.Updater, zu schnell |
bauser
Elite Member
  

Dabei seit: 15.03.2004
Beiträge: 370
 |
|
| prototype, Ajax.Updater, zu schnell |
 |
Hallo!
Ich hab das Problem, dass ich innerhalb einer Funktion
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
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.
__________________ I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von bauser: 09.10.2008 14:25.
|
|
08.10.2008 16:11 |
|
|
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von bauser am 08.10.2008 um 16:11 verfassten Beitrag. Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
|
Google
 |
|
|
|
comand
Newb

Dabei seit: 12.06.2005
Beiträge: 12
 |
|
das Zauberwort ist onComplete
du fürst den ersten updater aus und rufst bei onComplete eine funktion auf die dir den nächsten updater startet
und das immer so weiter verschachteln
Das Problem hab ich auch immer es liegt daran das JS standartmässig alles nacheinander durch geht ohne abzuwarten bis eine rückantwort da ist
ich weis leider keinen besseren weg als es so über OnComplete(oder onSuccess) zu verschachteln.
schau bei Prototype homepage einfach mal unter den Punkt ajax da solltest du diese onComplete option schnell finden
mfg
comand
|
|
09.10.2008 20:37 |
|
|
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von comand am 09.10.2008 um 20:37 verfassten Beitrag. Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
|
bauser
Elite Member
  

Dabei seit: 15.03.2004
Beiträge: 370
Themenstarter
 |
|
jojo, dass es nicht abwartet bis eine rückantwort da ist ist glaube ich das asynchronous in ajax ^^
mit dem onComplete wusst ich nich, danke.
__________________ I'm Tony Menthanar! You fuck wit me, you fuckin' wit da best!
|
|
10.10.2008 14:04 |
|
|
Der Betreiber und die Moderatoren vom www.coder-board.de distanzieren sich hiermit ausdrücklich von dem von bauser am 10.10.2008 um 14:04 verfassten Beitrag. Sollte dieser Beitrag Ihre Rechte verletzen, bitten wir um Benachrichtigung unter Berücksichtigung der dort aufgeführten Möglichkeiten.
|
|
|
|
 |
|