jQuery Ajax return Wert

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • jQuery Ajax return Wert

    Hi,
    folgende Frage:
    ich will ein Array mit dem Ergebnis einer Ajax abfrage füllen und anschließend weiter bearbeiten. Nur wie übergebe ich das Array foo als Referenz an die anonyme funktion in der Ajax anfrage?
    PHP Code:
    var foo = new array();
    jQ.get('ajax/test.xml'
        function(
    xml){
            
    jQ('node',xml).each(function(i) {
            
    // action 2 transfer xml data to array
            
    }            
        );}
    );
    alert(foo[0]); // gibt natürlcih nichts aus.... 
    "I don't want to belong to any club that would accept me as a member."

    Groucho Marx

  • #2
    Hallo,

    foo brauchst du nicht zu übergeben, du kannst es in der Funktion direkt benutzen, solange in deren Scope nicht ein anderes foo deklariert wird.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Comment


    • #3
      Hmm, dachte ich auch aber das gibt mir ein undefined:
      Wo habe ich denn Tomaten auf den Augen.....
      PHP Code:
      var pix =  new Array();
          
      jQ.get('ajax/test.xml'
            function(
      xml){
              
      jQ('photo',xml).each(function(i) {
                  var 
      imgPlace jQ(this).find("place").text();
                  var 
      imgTitle jQ(this).find("desc").text();
                  var 
      imgAddi jQ(this).find("addi").text();
                  
      alert(i);// zählt hoch...
                  
      pix[i] = imgPlace;                
             });
                      
       });
      alert(pix[1]);//undefinded 
      Last edited by mcmurphy; 25-08-2010, 17:51.
      "I don't want to belong to any club that would accept me as a member."

      Groucho Marx

      Comment


      • #4
        Steht denn in imgplace was drin oder ist das vielleicht selbst schon undefined?
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Comment


        • #5
          in imgplace steht ein String.
          Poste mal meinen kompletten versuch:
          PHP Code:
          jQ jQuery.noConflict();
          jQ(document).ready(function(){
          pix =  new Array();
          jQ.get('ajax/test.xml'
              function(
          xml){
                 
          jQ('photo',xml).each(function(i) {
                      var 
          imgPlace jQ(this).find("place").text();
                      var 
          imgTitle jQ(this).find("desc").text();
                      var 
          imgAddi jQ(this).find("addi").text();
                      var 
          output '<div style="float:left; ">';    
                      
          output += '<img class="loading" src="loading.gif" />';
                      
          output += '<img src="'imgPlace '" /><br />';
                      
          output += '<b>'imgTitle +'</b><br />';
                      
          output += '<i>'imgAddi +'</i><br />';    
                      
          output += '<u>Bild: '+ +++'</u><br />';                    
                      
          output += '</div>';
                      
          jQ("#data").append(output);
                     
          pix[i] = imgPlace;
                      
          alert(pix[i]);// gibt mir den richtigen Wert aus - 
                     //diese Alerts kommen aber erst NACH alert(pix[0]);
               
          }    
              );
                });
               
          alert(pix[0]);// ist hier undefined - wird aber auch zuerst ausgeben
          }); 
          Was ich nicht verstehe das beim Aufruf im Browser zuerst der alert(pix[0]); ausgegeben wird und erst dann die alerts aus der Ajax Function.
          Deswegen ja das undefined....
          Last edited by mcmurphy; 25-08-2010, 17:53.
          "I don't want to belong to any club that would accept me as a member."

          Groucho Marx

          Comment


          • #6
            Achso, ich kenne mich mit jQuery nicht aus und wusste nicht, dass das was asynchrones ist. D. h. deine Funktion ist ein Callback, der irgendwann aufgerufen wird, wenn die angefragte Ressource geantwortet hat und das passiert im Hintergrund. Deswegen wird in der Zwischenzeit dein Code weiterverarbeitet und zu dem Zeitpunkt steht in deinem Array halt noch nichts drin.

            Abhilfe: dein Zugriff auf pix[0] muss innerhalb der function(xml) und nach dem each-Kram stehen.

            Sorry, dass ich das nicht eher gemerkt hab.
            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
            Super, danke!
            [/COLOR]

            Comment


            • #7
              Sorry, dass ich das nicht eher gemerkt hab.
              ach was - XXL dank das du dich meinem Problem angenommen hast.
              Dann würde ein synchroner Aufruf mein Problem ja beheben - muß ich mir anschauen
              THX
              Last edited by mcmurphy; 25-08-2010, 18:23.
              "I don't want to belong to any club that would accept me as a member."

              Groucho Marx

              Comment


              • #8
                Originally posted by mcmurphy View Post
                Dann würde ein synchroner Aufruf mein Problem ja beheben
                Naja, prinzipiell stimmt das, aber ob das Sinn macht, ist eine andere Frage. Synchrone Requests legen für die Round-Trip-Dauer die Seite lahm, d. h. es werden dann auch keine Events bearbeitet, die Seite (falls sie noch im Aufbau ist) wird nicht weiter geladen etc.

                Asynchron kannst du trotzdem arbeiten, nur musst du alle Aktionen die von dem Request abhängen, mit in den Callback übernehmen, was ja jetzt auch nicht so tragisch wäre.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Comment


                • #9
                  Na Ziel der ganzen Sache ist ist eine Div Box mit einem Pager andere Inhalte bekommen soll und das Hintergrund bild von body sich ändern soll.
                  Deswegen dachte ich mir schieb das alles am Anfang in ein Array und hole dir dann die Inhalte aus dem Array. Wenn ich jedesmal eine anfrage stelle habe ich ja ladezeiten beim dem Bild und der Hintergrund würde wegbrechen.
                  Klapp jetzt erstmal die Kiste zu und mache morgen weiter ....
                  "I don't want to belong to any club that would accept me as a member."

                  Groucho Marx

                  Comment

                  Working...
                  X