der Jörchen: Ajax: Mehrere Request nacheinander

Hallo,

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.
Warum?

Die Funktion:

  
function loadINFOS(albumid,time)  
{  
  
 if (xmlHttp) {  
     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;  
         }  
     }  
   xmlHttp.send(null);  
 }  
  
}

Vielen Dank und Grüße

  1. Hi,

    Wenn du Funktionen ein weiteres mal aufgerufen wird, funktioniert nichts mehr.
    Warum?

    vermutlich weil Du nicht auf den Response wartest und somit "nacheinander" schon mal nicht gegeben ist. Abgesehen davon war "funktioniert nicht" noch nie auch nur annähernd als Fehlerbeschreibung brauchbar.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. 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.
    1. Ah, so war mir das nicht bewusst, dass die Funktion aufgerufen wird, wenn der erste Request  noch gar nicht fertig ist. Dann ist natürlich klar, dass die sich überschreiben. Dies geschieht dann schon beim zweiten Aufruf.

      Okay, aber schaffe ich es jedesmal ein neues xmlHTTP-Objekt zu erstellen?
      Derzeit erstelle ich diesen hiermit:

        
      var xmlHttp = false;  
      try {  
          xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");  
      } catch(e) {  
          try {  
              xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");  
          } catch(e) {  
              xmlHttp  = false;  
          }  
      }  
      if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {  
          xmlHttp = new XMLHttpRequest();  
      }  
      
      

      Müsste ich also diese Erzeugung in die Funktion mit einbauen und der derzeitigen Variable xmlHttp einen anderen Namen geben?
      Wie kann ich das umsetzen.

      Vielen Dank und Grüße

      1. Bitte antwortet doch! Es ist echt wichtig!!

        Danke und Gruß

        1. Hallo,

          Bitte antwortet doch! Es ist echt wichtig!!

          ich denke mal, dass sowas hier nicht gerne gesehen wird ;-)

          mfg
          Twilo

          1. Was ist nicht gerne gesehen? Ich wollte hier nur nochmal drauf hinweisen, da hierfür kein Interesse mehr gezeigt wurde und es hier wirklich wichtig ist, da ich das fertig bekommen muss.

            Also bitte. Danke.

            1. Hi,

              Was ist nicht gerne gesehen?

              ein Forum mit einem Chat zu verwechseln und zu drängeln-

              Ich wollte hier nur nochmal drauf hinweisen, da hierfür kein Interesse mehr gezeigt wurde

              Bitte? Nach gerade mal _einer_ _schlappen_ _Stunde_?! Überdenke mal Deine Ansprüche.

              und es hier wirklich wichtig ist,

              Tatsächlich? Mit nicht. Und Martin, Twilo und den meisten anderen sicherlich auch nicht. Wie also kommst Du zu dieser sehr allgemeingültigen Behauptung?

              da ich das fertig bekommen muss.

              Tatsächlich. Wer zwingt Dich denn dazu?

              Also bitte. Danke.

              Gern geschehen. Lies übrigens Deine Frage noch mal, übersetze sie ins Englische - insbesondere das Wörtchen "neu" - und schaue Dir dann Deinen eigenen Code an.

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
              1. Genau jetzt fangen wir an hier über den Sinn eines Forums zu diskutieren oder was!? Ich hab selbst in Foren als Moderator schon über 3000 Beiträge geschrieben, also weiß ich wie solche Drängler nerven, aber trotzdem, dass hier muss jetzt sein. Mich zwingt mein Auftraggeber dazu, da ich das hier beruflich mache. Und diese Requests sind das letzte was ich noch fertig machen muss.

                Bitte helft mir und ich bin euch für immer dankbar.

                Grüße und in Liebe,
                der Jörchen

                1. Hi,

                  also weiß ich wie solche Drängler nerven, aber trotzdem, dass hier muss jetzt sein.

                  Wenn Du es weißt, wieso tust Du es trotzdem?

                  Mich zwingt mein Auftraggeber dazu, da ich das hier beruflich mache.

                  Wenn Du mit Deinen Aufträgen überfordert bist, solltest Du sie vielleicht nicht annehmen.

                  Und diese Requests sind das letzte was ich noch fertig machen muss.

                  Und das gibt Dir das Recht, die kostenlosen Helfer, die hier für ihre Hilfestellungen ihre Freizeit ohne Gegenleistung opfern, zu drängeln?

                  cu,
                  Andreas

                  --
                  Warum nennt sich Andreas hier MudGuard?
                  Schreinerei Waechter
                  O o ostern ...
                  Fachfragen unaufgefordert per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
                  1. Also ich darf doch bitten. Überfordert bin ich mit meiner Arbeit sicher nicht, sonst wäre ich ja nichtmal soweit ;)
                    Richtig, das ist peinlich für mich zu drängeln, tut mir wahnsinnig Leid, ich werde es nie wieder tun!

                    Bitte helft mir, wenn ihr nicht wollt dann tuts mir auch Leid, dachte das ist ein Forum (kein Chat, ich weiß).

                    Grüße
                    der Jörchen

                    1. Hi,

                      Also ich darf doch bitten. Überfordert bin ich mit meiner Arbeit sicher nicht,

                      muss ich den Umstand, dass Du hier fragst, also so interpretieren, dass Du niedere Arbeiten delegierst?

                      Richtig, das ist peinlich für mich zu drängeln, tut mir wahnsinnig Leid, ich werde es nie wieder tun!

                      Das freut mich zu hören.[1]

                      Bitte helft mir,

                      Auf die Gefahr hin, mich zu wiederholen: Ich habe Dir einen Tipp gegeben.

                      wenn ihr nicht wollt

                      ... dann würden wir hier nicht posten.

                      Cheatah

                      [1] Ich weiß nicht, ob Du es glaubst, aber das meine ich ehrlich.

                      --
                      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                      X-Will-Answer-Email: No
                      X-Please-Search-Archive-First: Absolutely Yes
                      1. Ja, es ist mir peinlich, dass ich nun selbst in der Situation bin, dich als Moderator selbst schon so oft erlebt habe und da die ungedultigen Drängler gezüchtigt habe.

                        Ja, Du hast mir einen Tipp gegeben und ich hatte vorhin ja noch Fragen, da startete aber ja dann die Diskussion hier.

                        Meine Frage von vorhin steht hier: http://forum.de.selfhtml.org/?t=133476&m=864908

                        Vielen Dank und einen schönen Abend,
                        der Jörchen

                2. Hi,

                  Genau jetzt fangen wir an hier über den Sinn eines Forums zu diskutieren oder was!?

                  nein, wir fangen an, Dir Benehmen einzubläuen.

                  Ich hab selbst in Foren als Moderator schon über 3000 Beiträge geschrieben, also weiß ich wie solche Drängler nerven,

                  Umso peinlicher für Dich. Kleiner Tipp: Deine Sympathiekurve fällt derzeit stetig.

                  aber trotzdem, dass hier muss jetzt sein.

                  Nein, muss es nicht.

                  Mich zwingt mein Auftraggeber dazu, da ich das hier beruflich mache.

                  Selbständige Arbeit? Du solltest nur Aufträge annehmen, die Du bewältigen kannst. Andernfalls teile Deinem Arbeitgeber mit, dass er Dich schulen soll, wenn er Dir Aufgaben überträgt, die Du nicht beherrschst.

                  Bitte helft mir und ich bin euch für immer dankbar.

                  Ich habe Dir in meiner letzten Antwort einen Tipp gegeben. Das wird nicht wieder passieren, solange Du nicht bewiesen hast, dass Du Dich entgegen bisheriger Annahmen doch benehmen kannst.

                  Cheatah

                  --
                  X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
                  X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
                  X-Will-Answer-Email: No
                  X-Please-Search-Archive-First: Absolutely Yes