Rolf B: Ajax feuert mehrfach - Problem, die Antworten zuzuordnen

Beitrag lesen

Hallo Linuchs,

es ist die Frage, ob deine "Gib mir die Hilfedaten" Ajaxmethode hier das richtige Werkzeug ist. Denn - wenn Du ohnehin beim Seitenstart alle Hilfedaten abfragst, ist die ganze Idee mit asynchroner Beschaffung ad absurdum geführt. Dann kannst Du auch gleich beim Ausliefern der Seite ein Javascript-Objekt mit allen verfügbaren Hilfedaten in die Seite hineingenerieren.

Es ist auch die Frage, ob ein Ajax-Feuerwerk sinnvoll ist. Browser führen nicht beliebig viele Requeste parallel durch, das Limit ist relativ klein (2 oder 4). D.h. es dauert eine ganze Weile, bis alle Requests durch die Queue sind.

Deswegen würde ich Dir die Anregung von beatovich und PL sehr ans Herz legen: Sammle alle IDs, schick einen Request ab, und was Du dann tust, hängt vom Volumen deiner Hilfe ab. Wenn es nicht zu viel ist und Bandbreite keine Rolle spielt, dann rotz einfach alle Hilfeinformationen raus und lass sie vom Client cachen. Wenn das zu viel ist, schick ein Array zurück mit der ID als Key und true/false als Wert. true für "Es gibt Hilfe".

Das alles hat aber nichts damit zu tun, dass die Fragestellung interessant ist: Wie bändige ich parallel laufende Ajax-Requeste. Mein Vorschlag wäre hier, für jeden Ajax-Aufruf eine Funktion aufzurufen, die alle Daten als Parameter bekommt, die für die Zuordnung der Response wichtig sind. Die readystatechange-Handlerfunktion, die du INNERHALB DIESER FUNKTION an den Ajax-Request anhängst, hat dann alle diese Parameter in Form einer Closure zur Verfügung. Und weil Du die Funktion für jeden Request neu aufrufst, wird auch jedesmal eine neue Closure mit neuen Inhalten gebildet.

Closures sind ein kniffliges Gebilde - ich will jetzt nicht einfach loserklären. Wenn Du dazu Fragen hast: es steht was dazu im Wiki, aber natürlich kannst Du sie auch noch stellen, ich mache dann ein Beispiel.

Rolf

--
sumpsi - posui - clusi