[AJAX] Mehrfachaufruf des Skriptes

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [AJAX] Mehrfachaufruf des Skriptes

    Moin.

    Ich hab ein Bildergalerie-Skript mit AJAX geschrieben, das auf einer XML-Datei beruht. Dort stehen die Informationen zu den Bildern und die Konfigurationseinstellungen.
    Das Skript zeigt eine definierte Anzahl an Bildern als Thumbnails an und dan kann man zu den anderen Thumbnails durchscrollen. Das ganze läuft in einem <div>. Der Name des div's und der Name der XML-Datei werden beim Funktionsaufruf mit übergeben.
    Funktioniert prima, wenn das ganze nur einmal auf der Seite vorkommt.

    Wenn ich allerdings zwei Galerien untereinander setzen möchte, wird immer nur die zuletzt aufgerufene Galerie angezeigt.

    Jetzt die Frage: Wie schaffe ich es, dass mehrere Galerien unabhängig voneinander über das selbe Skript laufen können?

    PS: Die Thumbnails werden mittels JavaScript dynamisch in die Seite geschrieben. Bei mehreren Galerien wird für die erste gar nichts ausgegeben.
    Zuletzt geändert von XGremliN; 09.11.2006, 13:52.
    it's not a bug,
    it's a feature!

  • #2
    Wenn ich mir den Quelltext für die Thumbnails mit alert() ausgeben lasse funktioniert es im Firefox, nicht jedoch im IE. Wenn ich die alert()-Ausgabe wieder rausnehme gehts nicht mehr.
    it's not a bug,
    it's a feature!

    Kommentar


    • #3
      ist ja alles wunderschön, aber ohne entsprechenden code können wir nur raten.

      btw forumsregeln

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Das eine Antwort ohne Code schwer wird weis ich selbst, aber deshalb kann ich doch nicht die ganzen 400 Zeilen posten oder.
        it's not a bug,
        it's a feature!

        Kommentar


        • #5
          Original geschrieben von XGremliN
          Das eine Antwort ohne Code schwer wird weis ich selbst, aber deshalb kann ich doch nicht die ganzen 400 Zeilen posten oder.
          nein nur den, wo du glaubst, dass der dein problem verursacht. oder du hängst den code als .txt an und hoffst, dass sich jemand dadurchwühlt.

          alternativ böte sich auch eine online-version zum überprüfen an.

          gruß
          peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Hab jetzt noch mal nach fehlern gesucht.

            Meine Funktion wird so aufgerufen:
            PHP-Code:
            <div id="meins" ... >
            ...
            </
            div>
            <
            script type="text/javascript" language="javascript">
                
            macheRequest('init','meins','xml2.xml');
            </
            script
            Die Parameter sind:
            - initialisieren
            - ID des div's, in dem die Thumbnails angezeigt werden sollen
            - Name der XML-Datei mit den Einstellungen und den Bilder

            Später in der HTML-Datei wird das Script nochmal aufgerufen:
            PHP-Code:
            <div id="dings" ... >
            ...
            </
            div>
            <
            script type="text/javascript" language="javascript">
                
            macheRequest('init','dings','test.xml');
            </
            script
            Jetzt hab ich mir mal meine Div-ID beim Initialisieren ausgeben lassen und habe zwei Stück erwartet("meins" und "dings"), allerdings wird nur "dings" ausgegeben.

            Jetzt hab ich aber gedacht, dass eine Funktion erst wieder aufgerufen werden kann, wenn sie alle Anweisungen abgearbeitet hat. sieht aber in meinem Falls nicht so aus.
            Zuletzt geändert von XGremliN; 09.11.2006, 14:59.
            it's not a bug,
            it's a feature!

            Kommentar


            • #7
              Original geschrieben von XGremliN
              Jetzt hab ich mir mal meine Div-ID beim Initialisieren ausgeben lassen und habe zwei Stück erwartet("meins" und "dings"), allerdings wird nur "dings" ausgegeben.
              Was bedeutet denn "initialisieren" in deinem Script?

              Es müssten dann ja zwei verschiedene Objekte erzeugt werden, für jeden Request eins.
              Die Fehlerbeschreibung klingt aber eher danach, als ob es nur eins wäre, und dass dessen Eigenschaften - u.a. die Div-ID - dann überschrieben werden.
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                Genau das ist es. Die Daten des ersten Objektes werden überschrieben.

                Jetzt weiß ich aber nicht, wie ich ein zweites Request-Objekt erzeugen soll.

                PS: das erzeugen des Objekts funktioniert genauso wie in dem Tutorial "AJAX:Getting Started" von Mozilla.
                it's not a bug,
                it's a feature!

                Kommentar


                • #9
                  Arbeitest du denn wirklich objektorientiert in Javascript?
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Denke schon.

                    So wird das Request-Objekt erzeugt:
                    http_request = new XMLHttpRequest();

                    Dieses Objekt wird bei jedem Aufruf der Funktion macheRequest() neu erzeugt.
                    Zuletzt geändert von XGremliN; 09.11.2006, 15:12.
                    it's not a bug,
                    it's a feature!

                    Kommentar


                    • #11
                      Original geschrieben von XGremliN
                      So wird das Request-Objekt erzeugt:
                      http_request = new XMLHttpRequest();
                      An der Stelle hast du ja auch keine andere Wahl.
                      Dieses Objekt wird bei jedem Aufruf der Funktion macheRequest() neu erzeugt.
                      Schön, aber die anderen "Eigenschaften" eines solchen Anfrage, wie bei dir bspw. die Div-ID, musst du ja auch irgendwo ablegen - wo passiert das denn?
                      I don't believe in rebirth. Actually, I never did in my whole lives.

                      Kommentar


                      • #12
                        Nach dem Anlegen des Objekts wird meine Init-Funktion aufgerufen:
                        PHP-Code:
                        http_request.onreadystatechange = function() {
                        Init(divname);

                        Dann gehts in der Init weiter
                        PHP-Code:
                            function Init(divname)
                            {
                                        
                        //Wenn Status des Requests vollständig
                                
                        if (http_request.readyState == 4) {
                                        
                        //Wenn Antwort des HTTP-Servers OK (200)
                                    
                        if (http_request.status == 200) {
                                            
                        //antwort des Servers als ein XMLDocument-Objekt
                                        
                        var xmldoc http_request.respon************ML;

                        ...
                        var 
                        richtiger_div document.getElementById(divname);
                        ... 
                        it's not a bug,
                        it's a feature!

                        Kommentar


                        • #13
                          Informiere dich mal über den Begriff "Closure" in Javascript.
                          I don't believe in rebirth. Actually, I never did in my whole lives.

                          Kommentar


                          • #14
                            habs anders hingekriegt, über einen Array, in den meine Objekte gelegt werden. Beim Funktionsaufruf musste nur noch ein Parameter mehr zur Identifikation übergeben werden.
                            it's not a bug,
                            it's a feature!

                            Kommentar

                            Lädt...
                            X