Baba: Eine AJAX Abfrage nach der anderen ausführen?

Beitrag lesen

Hallo hics,

Callback sagt mir momentan noch nichts

Das ist der m.E. richtige Hinweis gewesen. Vergiss mal die while Schleife auf Serverseite. Die Ajaxfunktionen müssen sich selbst aufrufen, sonst können sie nicht nacheinander ausgeführt werden. Kurzerklärung:
AJAX besteht ja im Prinzip aus drei Teilen: 1) Request Objekt erstellen, 2) Requestfunktion, 3) Callbackfunktion.

  1. Requestobjekt erstellen, mit Browserweiche. Findest Du in einem Einsteigerturorial. Variable heisst dann zum Beispiel AjaxRequestObject (für dieses Beispiel).
  2. Requestfunktion enthält unter anderem den Teil
    AjaxRequestObject.open(method, url, asynch);
    zum Definieren des Requests aber auch
    AjaxRequestObject.onreadystatechange = AjaxRequestObjectHandle;
    zum Definieren der Callbackfunktion, hier AjaxRequestObjectHandle(). (Achtung ohne () hinter der Zuweisung, sonst wird sie gleich ausgeführt).
  3. Die Callbackfunktion wird ausgeführt, sobald sich der Zustand des Requestobjekts geändert hat "onreadystatechange". Das passiert öfter während des gesamten Requests. Wichtig ist aber meistens _die erfolgreiche Beendigung_ des Requests, daher musst du in der Callbackfunktion erstmal .readyState == 4 und .status == 200 prüfen, aber das findest Du in den Einsteigertutorials.

Dann kannst du in der Callbackfunktion bei readyState==4 und .status==200 erneut die AjaxRequest-Funktion ausführen. Wichtig wäre dabei aber noch einen geeigneten Rückgabewert einzuführen, auf den reagiert wird, da die Requests sonst endlos aufgerufen werden. D.h. in das aufgerufene Script muss eine Prüfung rein, ob es weitere Requests geben soll, und dann wird ein entsprechender Wert zurückgegeben. In der Callbackfunktion kannst du mit z.B. .responseText auf diesen Rückgabewert reagieren. Wenn das Script mehrere/viele Werte zurückgibt, besser gleich mit JASON, xml,... in den Rückgabewerten arbeiten und .responseXML,...

Cheers,
Baba