Hi,
ich möchte ein und die selbe Funktion mit verschiedenen Parametern mehrmals aufrufen. In der Funktion wird über Ajax ein Request abgesendet und verwertet. Wenn du Funktionen ein weiteres mal aufgerufen wird, funktioniert nichts mehr.
das überrascht mich nicht, wenn ich mir den Javascript-Code näher ansehe.
function loadINFOS(albumid,time)
{
if (xmlHttp) {
xmlHttp ist hier ein global definiertes Objekt. Beim ersten Funktionsaufruf gibst du ihm die nötigen Informationen:
xmlHttp.open('GET', 'streams.php?gallery=loadINFOS&id='+id+'&albumid='+albumid+'&time='+time, true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
document.getElementById('picture_'+time).innerHTML = xmlHttp.responseText;
}
und schickst dein Objekt an die Arbeit:
xmlHttp.send(null);
Und das tut es dann auch. Rufst du die Funktion in der Zwischenzeit ein weiteres Mal auf, werden die Daten des ersten Aufrufs überschrieben. Wenn also die Antwort auf die erste Anfrage schließlich eintrudelt, sind die zugehörigen Kontrollinformationen nicht mehr auffindbar.
Ich vermute sogar (weil ich nicht weiß, wie die send()-Methode des Objekts genau arbeitet), dass der zweite Aufruf von xmlHttp.send() schon das Durcheinander verursacht.
Das ist das Dilemma mit den globalen Variablen ...
Du brauchst daher für jeden AJAX-Request, der zeitlich überlappend mit anderen gleichartigen Requests laufen soll, ein separates xmlHttp-Objekt, damit die sich nicht in die Quere kommen.
So long,
Martin
F: Was ist wichtiger: Die Sonne oder der Mond?
A: Der Mond. Denn er scheint nachts. Die Sonne dagegen scheint tagsüber, wenn es sowieso hell ist.