vars aus jquery get ist undefined

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

  • vars aus jquery get ist undefined

    Code:
    function getvidtitle(vidid){
    
    $.get('http://gdata.youtube.com/feeds/api/videos/'+vidid+'?v=2&alt=json',function(data) {
             //hier ist sie bekannt
             title=data.entry.title.$t;
             console.log(title);                
                });
            
            //ab hier ist sie undefined
    	return title;
    }
    Kann mir jemand sagen wieso title undefined (vielleicht weil sie in einer anonymen funktion sitzt) ist und wie ich sie weiter verwenden kann?
    Ohne das ich jetzt die Variable globalisieren muss?!
    Zuletzt geändert von Marcus-24-D; 08.03.2014, 11:17.

  • #2
    Nein, da du kein [FONT="Courier New"]var[/FONT] davor stehen hast, ist die Variable global.

    Sie hat allerdings noch keinen Wert zugewiesen bekommen an der Stelle, wo du sie zurückgeben möchtest – weil $.get asynchron arbeitet.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      wieso des? ich weise title doch das ergebnis zu?!

      title=data.entry.title.$t;

      und danach geb ichs mir return zurück oder hab ich nen Denkfehler?
      Oder meinst du die Var müsste außerhalb der Funktion erstmal definiert werden?
      Bzw. wie bekomme ich nun das gewünschte Ergebnis raus?
      Am liebsten wäre mir aber dennnoch eine Synchrone Übertragung weil zur Laufzeit neue Texte eingehen (Chat).
      Zuletzt geändert von Marcus-24-D; 08.03.2014, 16:27.

      Kommentar


      • #4
        Zitat von Marcus-24-D Beitrag anzeigen
        wieso des? ich weise title doch das ergebnis zu?!
        Nein, tust du nicht – weil das Ergebnis zu dem Zeitpunkt noch gar nicht da ist.

        Und Nein, synchron wäre dir nicht lieber, weil ein synchroner Request den Browser komplett blockiert bis das Ergebnis eingetroffen ist.

        Mach dich einfach mal ein bisschen schlau, wie man mit asynchronen Funktionen in JavaScript umgeht …
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          hm..irgendwie versteh ich das nicht so wirklich.
          Wenn ich in einem Chat Synchron Daten abfrage(userinputs) und mit
          einer Asynchronen Funktion weitere Daten lade, in diesem Fall den
          Video Titel, würde ich doch nie an die Daten der Asynchronen Daten kommen.
          Es sei denn ich refreshe meinen Content oder übertrage Sie beim Request
          (Status 200) auf das von mir gewünschte Element. Oder hab ich das falsch verstanden?

          Kennst du denn ein gutes Tutorial oder so für Asynchrone Funktionen?

          Kommentar


          • #6
            Natürlich kommst du an die Daten – in der Callback-Funktion. Die ist ja eben dafür da, genau dann aufgerufen zu werden, wenn der asynchrone Request im Hintergrund abgeschlossen wurde. In in der stehen dann auch die Daten zur Verfügung.

            Moderndes JavaScript im Browser läuft weitgehend event-basiert ab – und das ist auch bei AJAX-Requests der Fall.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              ah, nun hab ichs geschnallt, glaube ich*kopfkratz

              Code:
                      function getYVidTitel(vidid) {
              			
                              $.ajax({
                                      url: 'http://gdata.youtube.com/feeds/api/videos/'+vidid+'?v=2&alt=json',
                                      dataType: "jsonp",
                                      success: function (data) 
                                      {
                                      	vidTResult(data,vidid);
                                      }
                              });
                      }
              
                      function vidTResult(data,vidid) 
              		{
              			var title = data.entry.title.$t;
              			//in das div
              			$('#vT'+vidid).html(title);
              
                      }
              		
              		
              		getYVidTitel(vidid);
              		//weitere inputs
              jedenfall scheint es zu funktionieren.
              Dann hätt ich also nach nem einfachen success: schon die Daten übertragen können? Warum sagst das ned gleich?
              *ichHauMirMalDenKopp@tisch.
              Hab wieder was gelernt. Vielen Dank für deine Bemühungen

              Kommentar

              Lädt...
              X