Ankündigung

Einklappen
Keine Ankündigung bisher.

Array aus JQuery Funktion laden

Einklappen

Neue Werbung 2019

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

  • Array aus JQuery Funktion laden

    Ich möchte die Eergebnisse aus diesem Code auserhalb der Funktion nutzen .
    Dazu speichere ich es in einem Array. Leider Speichert es aber nicht.
    Bleibt leer.

    PHP-Code:
         var arr = new Array();
          
            
            for(var 
    x=0;x<anzeige.lengthx++)
            {
                $(
    "#liste").append('<option value ="'+x+'" >'+anzeige[x]+"</option>");
                 
                $.
    get("Kategorien/"+anzeige[x]+".xml", function(data){
                    
                    $(
    data).find("liste").each(function(data){
                        var 
    test = $(this).find("anzeige").text();
                        
    arr.push(test);
                    }); 
                    },
    "xml");
               
            }
            
    alert(arr.length); 

  • #2
    Und was hast du zwecks debugging unternommen ?
    [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

    Kommentar


    • #3
      Ich habe mal mit Firebug den Script teil durchgebuggt. Da scheint es so als ob er
      Hier:
      PHP-Code:
       $.get("Kategorien/"+anzeige[x]+".xml", function(data){
      $(
      data).find("liste").each(function(data){
      var 
      test = $(this).find("anzeige").text();
      arr.push(test);
      });
      },
      "xml"); 
      die function(data) einfach überspringt.

      und hier einfach weitermacht:
      },"xml")
      Tuts aber nicht wenn ich alert(test) ausführe wir es angezeigt.

      Was soll ich Debuggen?

      Kommentar


      • #4
        Hallöchen,

        ach herrje. Die gute alte Asynchronität. Irgendwann hat es hoffentlich auch der letzte begriffen

        Tipp: der Code innerhalb der an $.get übergebenen Callback-Funktion wird mit höchster Wahrscheinlichkeit erst *nach* deinem alert aufgerufen.

        Viele Grüße,
        lotti
        [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

        Kommentar


        • #5
          Okay dan Formuliere ich meine Frage nochmal um:
          Wie bekomme ich alle Werte die in get callback ausgeführt werden in einem Array?

          So funktioniert es nicht:
          PHP-Code:
            for(var x=0;x<anzeige.lengthx++)
                  {
                      
          anzeigeArr.push(anzeige[x]);
                      $(
          "#liste").append('<option value ="'+x+'" >'+anzeige[x]+"</option>");
                   
                       
                         $.
          get("Kategorien/"+anzeige[x]+".xml", function(data){
                          
                          $(
          data).find("liste").each(function(){var arr = [];
                            var 
          test   = $(this).find("anzeige").text();
                            
          arr.push(test);
                          
          alert(arr[0]);
                          });
                         
                          },
          "xml");  
                  } 

          Kommentar


          • #6
            Kannst du mal einen Besipielcode mit deinem Alert beifügen. Wenn der Alert anspringt, wird die Funktion auch ausgeführt und das Problem liegt woanders.
            In dem Fall spielt auch Asynchronität keine Rolle, da du ja mit deinem Alert keine Funktionen ala wenn,dann aufrufst sondern ein schlichtes Alert.

            Kommentar


            • #7
              Zitat von Labrar Beitrag anzeigen
              Kannst du mal einen Besipielcode mit deinem Alert beifügen. Wenn der Alert anspringt, wird die Funktion auch ausgeführt und das Problem liegt woanders.
              In dem Fall spielt auch Asynchronität keine Rolle, da du ja mit deinem Alert keine Funktionen ala wenn,dann aufrufst sondern ein schlichtes Alert.
              [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

              Kommentar


              • #8
                Sorry. Hatte den Alert im Code nicht gesehen und gebe somit Lotti recht.

                Kommentar


                • #9
                  Zitat von Labrar Beitrag anzeigen
                  Sorry. Hatte den Alert im Code nicht gesehen und gebe somit Lotti recht.
                  Aber schaue bitte bei meinem zweiten Code, Da steht alert in der Funktion und funktioniert.

                  Ich kann es nur nicht in einem Array speichern. Vermute dass dies dadran liegt dass dass ganze ja Funktionen sind und immer wieder neu aufgerufen werden.

                  Kann man eigentlich bei dieser schreibweise einen Return setzen?

                  Ich suche nach lösungen mir fällt nur zurzeit überhaupt nichts ein.

                  Kommentar


                  • #10
                    Als Fortgeschrittener solltest du dich hinsetzen und #4 solange durchlesen, bis dus verstanden hast.
                    I like cooking my family and my pets.
                    Use commas. Don't be a psycho.
                    [URL="http://jscouch.de"]Blog[/URL] - [URL="http://coverflowjs.github.io/coverflow/"]CoverflowJS[/URL]

                    Kommentar


                    • #11
                      Zitat von rudygotya Beitrag anzeigen
                      Als Fortgeschrittener solltest du dich hinsetzen und #4 solange durchlesen, bis dus verstanden hast.
                      Fortgeschritten bin ich nur in PHP. In Javaschript bin ich blutiger Anfänger.

                      Kommentar


                      • #12
                        Was genau willst du mit dem Array, welches du erstellst denn anfangen? Arbeite doch einfach innerhalb der Funktion damit weiter, wo du den Result vom AJAX-Request bekommst.
                        [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                        Kommentar


                        • #13
                          Ich glaube, der Code sähe generell recht anders aus wenn mehr Verständnis der eingesetzten Technologie vorhanden wäre. Mehr kann ich leider nicht dazu sagen, da ich das große Ganze nicht kenne.

                          Kommentar


                          • #14
                            Ich vermute dass dass mit JQuery Get auch nicht ganz so funktioniert.

                            Ich möchte einfach ein DropDown Menü erstellen mit einträgen die in einer Textdatei stehen dies funktioniert.

                            Dann soll durch einfaches klicken einer bestimmten Kategorie den dazu gehörigen Text dieser in einer XMl Datei gespeichert ist. geöffnet und unterhalb des Dropdown Menüs angezeigt werden.

                            Dazu wollte ich dass in einem Array speicher so dass man bequem hin und her navigieren kann.

                            Kommentar


                            • #15
                              Hallöchen,

                              Zitat von Darknet Beitrag anzeigen
                              Aber schaue bitte bei meinem zweiten Code, Da steht alert in der Funktion und funktioniert.
                              Durch wildes herumprobieren kommst du nicht weiter. Hast du dir mal angesehen was es mit der Asynchronität - inbesondere in Bezug auf AJAX-Requests - auf sich hat?

                              Zitat von Darknet Beitrag anzeigen
                              Ich kann es nur nicht in einem Array speichern. Vermute dass dies dadran liegt dass dass ganze ja Funktionen sind und immer wieder neu aufgerufen werden.
                              Das Problem ist nicht das Ablegen in einem Array, sondern der Zeitpunkt der Verfügbarkeit. Ein HTTP-Request dauert nunmal seine Zeit und daran kannst du auch nichts ändern. D.h. im Klartext: du kannst nicht Daten von einem Server anfordern und erwarten, dass diese eine Zeile später (im synchronen Kontext) bereits verfügbar sind. Deshalb asynchron.

                              Zitat von Darknet Beitrag anzeigen
                              Kann man eigentlich bei dieser schreibweise einen Return setzen?
                              Auch diese Frage klärt sich, wenn du Google bzgl. Ansynchronität konsultierst.

                              Zitat von Darknet Beitrag anzeigen
                              Ich suche nach lösungen mir fällt nur zurzeit überhaupt nichts ein.
                              Von nix kommt halt nix. JavaScript ist eine komplexe Script-Sprache deren Verhalten sich nicht erraten lässt und ohne solide Grundlagen, scheitert man eben an den (scheinbar) einfachsten Dingen.

                              Hier noch ein Rätsel für dich. Wie lautet die Ausgabe des folgenden Scripts:
                              Code:
                              $.get('/', function(){
                                  console.log('async');
                              });
                              console.log('sync');


                              Zitat von Darknet Beitrag anzeigen
                              Fortgeschritten bin ich nur in PHP.
                              Kann ich nur schwer glauben. Sorry.

                              Viele Grüße,
                              lotti
                              [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                              Kommentar

                              Lädt...
                              X