Linuchs: Ajax feuert mehrfach - Problem, die Antworten zuzuordnen

Beitrag lesen

Moin,

ich statte eine Webseite mit mehreren (z.B. 30) Help-Symbolen aus, jedes hat eine ID:

<img id="VIP_1102" class="help" src="img/icon_info.png" alt="info" />

nach Laden der Seite wird denen ein Klick-Event zugeordnet:

window.addEventListener('DOMContentLoaded', function ( ) {
  var erster  = document.getElementsByTagName( "body" )[0].firstChild;
  var newDiv  = document.createElement("div");
  newDiv.id   = "helptext";
  document.body.insertBefore( newDiv, erster ); 

/* *************************************************
   *
   * HELP-Icons/Buchstaben anschliessen
   *
   ************************************************* */
  obj_help = document.getElementsByClassName( "help" );
  for ( i=0; i<obj_help.length; i++ ) {
    if ( obj_help[i].id ) {
      obj_help[i].addEventListener('click', function (event) {
        getHelptextXY( bia_domain, bia_owner, bia_kw, bia_ll, this.id, bia_lg, event.clientX, event.clientY );
      });
    }
  }
});

Wenn man draufklickt, wird per Ajax der Help-Text zu diesem Feld geholt und angezeigt. So weit, so gut.

Nun möchte ich das erweitern und nach dem Laden des HTML-Dokuments alle Help-Symbole der Seite "durchhecheln", um diejenigen auszugrauen, für die (noch) kein Helptext vorliegt. Ich sende also vermutlich im Millisekunden-Takt 30 Anfragen los und irgendwann - undefiniert - trudeln die Antworten ein.

Doch wie kann ich wissen, welche Antwort zu welcher ID gehört?

Zuerst habe ich die ID der Anfrage ausserhalb der Funktionen gespeichert und in der Antwort-Funktion genutzt. Das klappte nicht, denn vermutlich haben nachfolgende Ajax-Anfragen die ID längst neu gesetzt und bei ankommendem request wurde "irgendeine" ID genommen.

Dann habe ich versucht, die ID zu übergeben:

  ...
  request.onreadystatechange = zeigeHelptext(id); // Request auswerten
  ...
function zeigeHelptext(id) {
... 
}

Ohne Angabe eines Fehlers wurde nun kein Helptext mehr angezeigt, auch nicht bei Klick. Ich nehme an, die bei request.onreadystatechange anzuspringende Funktion darf nicht mit Parameter versehen werden.

Wie - zum Teufel - kann ich Frage und Antwort zuordnen, wenn Ajax wie ein Maschinengewehr feuert?

Auch hier wieder geschlossene Benutzergruppe, leider kein Online-Beispiel.

Gruß, Linuchs