selfmade01: globale Variable in jquery Funktion

Hallo

ich suche nach einer Möglichkeit eine globale Variable zu nutzen was jedoch nicht funktioniert.

Ich habe ein jquery script in dem ich aus einer ajaxLangScript.php meine via gettext übersetzten Texte holen möchte um diese dann in meinem jquery-script verwenden zu können. Dabei benötige ich eine globale Variable die ich in jeder Funktion verwenden kann. Aktuell bekomme ich nur ein undefined.



var translate;
$( document ).ready(function() {
						$.ajax({
							url: '../translate/ajaxLangScript.php',
							dataType: 'json',
							success: function(data) {
							translate = data[0];		
							},
							async: false
						});
					
		});
alert("das ist test 1 : "+translate['testtext']);

jQuery(function($) {
      $('.addInfoPic').on('click', function(){

       bootbox.confirm({
								
		message: translate['testtext'] ,
		buttons: {
		  confirm: {
		  label: "OK",
		  className: "btn-primary btn-sm",
		   },
		   cancel: {
		  label: "Cancel",
		  className: "btn-sm",
		   }
		},
		callback: function(result) {
		   //if(result) bla bla;
		}
		});

       });
});

Grüße Jürgen

  1. Lieber selfmade01,

    Du hast ein Timing-Problem: Wann wird der Wert von translate verändert, und wann gibst Du den aktuellen Wert von translate aus?

    Wenn Du den Alert in Deine success-Funktion schreibst, steht da nicht mehr undefined.

    Mir scheint, Du hast ein konzeptionelles Problem, wenn Du eine globale Variable benötigst!

    Liebe Grüße,

    Felix Riesterer.

    --
    "Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)
    1. hallo felix

      Mir scheint, Du hast ein konzeptionelles Problem, wenn Du eine globale Variable benötigst!

      ja, das glaube ich auch. Nur hatte ich es zuvor schon anders probiert. Siehe bitte die letzte Frage die ich stellte...

      Ich sehe unter firebug das ich via Ajax die Antwort schon erhalten habe. Nur kommt kurz drauf dann die Fehlermeldung.

      Da er ja schon das ajax-script abgearbeitet hat, die Antwort schon bekommen hat, sollte er eigentlich nun zu diesem Zeitpunkt doch die Variable schon gefüllt haben.

      Zumindest in meinem letzten Beispiel wo ich nicht mehr die document ready function verwende

      oder?

      Grüße Jürgen

  2. Hallo selfmade01,

    ich vermute, das ist ein Timing-Problem:

    $( document ).ready(function() {

    wird erst ausgeführt, wenn Dokument oder DOM geladen,

      });
    

    alert("das ist test 1 : "+translate['testtext']);

    wird aber sofort ausgeführt.

    Gruß, Jürgen

    1. Hallo,

      Hallo selfmade01,

      ich vermute, das ist ein Timing-Problem:

      mmhh... am Anfang hatte ich es so probiert.

      jQuery(function($) { var translate ;

      $.ajax({                                                         url: '../translate/ajaxLangScript.php',                                                         dataType: 'json',                                                         success: function(data) {                                                         translate = data[0];                                                         },                                                         async: false                                                 });

      alert("das ist test 1 : "+translate['testtext']);

      });

      Die Antwort die ich durch ajaxLangScript.php bekomme lautet {"testtext":"aha es geht"}

      hier bringt er aber auch ein undefined

      in der Felermeldung von firebug sehe ich, dass zuvor er die Antwort von ajaxLangScript.php bekommt. Die Variable "translate" sollte also schon gefüllt sein.

      ich habe hier ein umfangreiches jquery-script ist es besser so etwas mit einer Klasse zu bewärkstelligen? wenn ja, wie muss ich diese definieren?

      Grüße Jürgen

      1. Tach!

        ich habe hier ein umfangreiches jquery-script ist es besser so etwas mit einer Klasse zu bewärkstelligen?

        Egal wie umfangreich oder einfach die Verwendung des Inhalts von translate ist, es darf nicht vor dem Aufruf des success() erfolgen. Eine Klasse hilft nicht dabei, zeitliche Probleme zu lösen.

        dedlfix.

        1. Hallo,

          das verstehe ich nicht ganz.

          Ich muss doch zuvor als aller erstes erstmal eine globale leer Variable definieren. Im zweiten step befülle ich diese dann mit dem Ergebnis aus success oder? im dritten step kann ich diese dann verwenden.

          Ich sehe ja unter firebug das er ajax bereits abgearbeitet hat und ich als Antwort meinen Text in einem json-array bekommen habe.

          erst dann kommt die Fehlermeldung des alert wo ich mir die Variable ausgeben lasse.

          Grüße Jürgen

          hier nochmal der aktualisierte code

          	jQuery(function($) {
          		
          		var translate;
          			$.ajax({
          			url: '../translate/ajaxLangScript.php',
          			dataType: 'json',
          			success: function(data) {
          			translate = data[0];		
          			},
          			async: false
          		});
          					
          alert("das ist test 1 : "+translate['testtext']);
          });
          

          Tach!

          ich habe hier ein umfangreiches jquery-script ist es besser so etwas mit einer Klasse zu bewärkstelligen?

          Egal wie umfangreich oder einfach die Verwendung des Inhalts von translate ist, es darf nicht vor dem Aufruf des success() erfolgen. Eine Klasse hilft nicht dabei, zeitliche Probleme zu lösen.

          1. Tach!

            Ich muss doch zuvor als aller erstes erstmal eine globale leer Variable definieren. Im zweiten step befülle ich diese dann mit dem Ergebnis aus success oder? im dritten step kann ich diese dann verwenden.

            Genau so. Das heißt entweder, dass du alles weitere in der success() ausführst, woraufhin diese unwartbar groß wird. Oder du schreibst deinen Code so, dass er nicht direkt ausgeführt wird (in Funktionen), die Ausführung aber von einem Funktionsaufruf innerhalb von success() angestoßen wird.

            Ich sehe ja unter firebug das er ajax bereits abgearbeitet hat und ich als Antwort meinen Text in einem json-array bekommen habe. erst dann kommt die Fehlermeldung des alert wo ich mir die Variable ausgeben lasse.

            Das glaube ich nicht, dass du das so genau sehen kannst. Die zeitliche Abfolge ist zu dicht. Du siehst das alert(). Und du siehst auch im Netzwerkmonitor, dass die Response vom Ajax-Call zurückgekommen ist. Du siehst aber nicht, dass success() noch nicht ausgeführt wurde, weil dein Javascript immer noch im alert() hängt und auf eine Bestätigung wartet. Du kannst die Reihenfolge besser sehen, wenn du Breakpoints auf die alert()-Zeile setzt und einen zweiten auf die translate=data[0]-Zeile. So kannst du genau sehen, wer zuerst in deinem Code aufgerufen wird.

            Wie auch immer, ich würde AngularJS nehmen. Das ist durch seine Arbeitsweise so gestaltet, dass man ungefüllte Variablen sofort verwenden kann, und die Stellen dann aktualisiert werden, wenn der Inhalt zur Verfügung steht.

            dedlfix.

            1. Tach!

              Hallo Auf ein weiteres framework wie angular wollte ich eigentlich verzichten da ich schon jquery verwende. Das mit den breskpoints werde ich später gleich mal testen. Wie ich das aus dem succes verwenden sollte habe ich nicht verstanden . Ich muss doch gerade dort eine globale variable füllen wie soll ich das sonst machen? Beispiel. Möglich?

              Wenn das broblem das laden ist so würde das problem ja überall im ganzen script bestehen oder? Wie kann ich das dann ändern? Ich müsste doch es schaffen jquery zu sagen warte solannge mit allem anderen bevor die Variable gefüllt ist

              Grüsse jürgen

              1. Tach!

                Auf ein weiteres framework wie angular wollte ich eigentlich verzichten da ich schon jquery verwende.

                AngularJS kann man nicht mal eben so dazupacken. Entweder baut man die gesamte Anwendung damit auf oder man lässt es. Die Vorteile, gerade bei dem asynchronen Datenbereitstellen und Angulars Data Binding, liegen aber auf der Hand.

                Wie ich das aus dem succes verwenden sollte habe ich nicht verstanden . Ich muss doch gerade dort eine globale variable füllen wie soll ich das sonst machen? Beispiel. Möglich?

                Das Füllen der globalen Variable ist ja nicht das Problem. Das Problem ist, dass du erst danach darauf zugreifen kannst. Jeglicher Code, der von dem Inhalt der Variable abhängig ist, darf erst nach dem Füllen starten.

                success: function(data) {   translate = data[0];   führe_das_aus_was_auf_translate_zugreifen_will(); }

                Wenn das broblem das laden ist so würde das problem ja überall im ganzen script bestehen oder?

                Richtig.

                Wie kann ich das dann ändern?

                Wie ich schon schrieb. Nichts vorher ausführen. Ein Stück Code in success() startet den Rest.

                Ich müsste doch es schaffen jquery zu sagen warte solannge mit allem anderen bevor die Variable gefüllt ist

                Nein, das geht nicht. Ein "warte bitte" gibt es nicht, weder in jQuery noch in Javascript. Es gibt nur Callbacks, die man ausführen lässt, wenn etwas anderes fertig ist. Oder man startet eine Funktion über einen fest verdrahteten Namen, so wie in dem Minimalbeispiel oben.

                dedlfix.

                1. hallo,

                  sorry, aber ich glaube du verstehst nicht woran ich scheitere.

                  Ich weiss nicht wie ich das aufzurufen habe. Ja, ich habe jedoch verstanden das ich dies nun aus der success function heraus aufrufen muss

                  Hier ein Auszug meines aktuellen scripts was ich nutze und wie ich es vorhabe

                  
                  // Beginn von allem
                  var translate;
                  $( document ).ready(function() {
                  		$.ajax({
                  		url: '../translate/ajaxLangScript.php',
                  		dataType: 'json',
                  	        success: function(data) {
                  		translate = data[0];
                  		allesandere(translate);
                  		},
                  		async: false
                                });
                  
                  });
                  

                  function allesandere(translate){        //hier fängt mein alter code an der funktioniert und den will ich benutzen        jQuery(function($) {

                  // alles was hier steht ist mein bestehendes script und benötigt die translate variable         });

                  }

                  Nur geht es so nicht...

                  Grüße Jürgen

                  1. Tach!

                    function allesandere(translate){        //hier fängt mein alter code an der funktioniert und den will ich benutzen        jQuery(function($) {

                    // alles was hier steht ist mein bestehendes script und benötigt die translate variable         }); }

                    Nur geht es so nicht...

                    Das glaube ich dir. Du handelst dir wieder ein Zeitproblem ein, weil du jQuery anscheinend nicht verstanden hast. Der Aufruf jQuery(function() {...}) veranlasst bei jQuery, dass die übergebene Funktion in die Abarbeitungsschlange beim Auftreten des DOM-Ready-Events gehängt wird. Das allerdings kam schon längst und hat deinen anderen Code ("Beginn von allem") ausgeführt und dann den Ajax-Call gestartet. Der kam irgendwann zurück und ruft die Funktion auf, in der dem DOM-Ready-Event ein Handler angehängt wird. Der niemals mehr aufgerufen wird, weil DOM-Ready schon längst durch ist. Du solltest dich nochmal mit den Grundlagen von jQuery beschäftigen und wie man in Javascript Kapslung betreibt.

                    jQuery(function($) {...}); ist dasselbe wie wie $( document ).ready(function() {...}); Wenn es dir lediglich darum geht, jQuery nach $ (innerhalb des Scopes deiner Funktion allesandere) zu übersetzen, dann mach eine Variablenzuweisung. Aber du hast ja offensichtlich das $ schon im globalen Scope mit der Bedeutung eines Aliases auf jQuery. Also wäre es ausreichend das so zu tun:

                    function allesandere(translate){        // alles was hier steht ist mein bestehendes script und benötigt die translate variable }

                    Und wenn du nun die Variable translate in den Scope als Parameter reinreichst, brauchst du auch keine globale Variable mehr. Die wird ja sowieso überschrieben.

                    dedlfix.

                    1. Hallo,

                      also Du meinst so sollte es funktionieren?

                      $( document ).ready(function() {
                      						$.ajax({
                      							url: '../translate/ajaxLangScript.php',
                      							dataType: 'json',
                      							success: function(data) {
                      							var translate = data[0];
                      							allesandere(translate);
                      							},
                      							async: false
                      						});
                      			//alert("das ist test 1 : "+translate['are_you_sure']);					
                      		});
                      
                      function allesandere(translate){
                      
                      }
                      
                      
                      

                      das geht aber nicht

                      zumindest nicht in den anderen functions wie dieser... die innerhalb des scripts steht

                      
                      $('.addEditInfoPic').on('click', function(translate){
                      bootbox.confirm({	
                      							message: translate['are_you_sure'] ,
                      							buttons: {
                      							   confirm: {
                      								  label: translate['Delete'],
                      								  className: "btn-primary btn-sm",
                      							   },
                      							   cancel: {
                      								  label: translate['Cancel'],
                      								  className: "btn-sm",
                      							   }
                      							},
                      							callback: function(result) {
                      							   //if(result) do something;
                      							}
                      						 });
                      });
                      
                      

                      Grüße Jürgen

                      1. Tach!

                        also Du meinst so sollte es funktionieren?

                        Ja.

                        das geht aber nicht

                        Das ist keine Problembeschreibung.

                        zumindest nicht in den anderen functions wie dieser... die innerhalb des scripts steht $('.addEditInfoPic').on('click', function(translate){

                        Eine Event-Handler-Funktion bekommt als ersten Parameter ein Event-Objekt übergeben. Wenn du das in translate entgegennimmst, kann das nichts werden. Am besten steht dort gar nichts, denn das translate muss schon in einem übergeordneten Scope vorhanden sein.

                        dedlfix.

                        1. Tach!

                          Nachtrag:

                          das geht aber nicht Das ist keine Problembeschreibung. zumindest nicht in den anderen functions wie dieser... die innerhalb des scripts steht $('.addEditInfoPic').on('click', function(translate){

                          Wie wird eine Problembeschreibung draus? Breakpoint in die erste Zeile der Funktion setzen, den Click auslösen, mit dem Debugger das translate anschauen, feststellen dass das was anderes ist als angenommen, eventuell schon selbst auf die Lösung kommen.

                          Es ist eine ganz wichtige Vorgehensweise beim Programmieren, dass man bei Problemen nachschaut, was denn da los ist. Die Strategie "probieren bis es klappt" versagt oftmals aufgrund von Mangel an weiteren Ideen, wenn man schon vieles ungezielt versucht hat. Nicht nur die Fehlermeldungen lesen, sondern auch den Inhalt der beteiligten Variablen anschauen. Dazu muss man mit dem Debugger umgehen können. Ständig alerts oder console.log() ist nicht die beste Lösung.

                          dedlfix.

                          1. Das Debuggen via Firebug würde ich gerne machen

                            nur zeigt er mir dort keine Datei an die ich überwachen kann wahrscheinlich ist der Grund das ich die Seite in der das Script eingebunden wird via Ajax lade

                            dort in dieser Datei sieht es so aus

                            $s .='<style>
                            		.animated {
                            			-webkit-transition: height 0.2s;
                            			-moz-transition: height 0.2s;
                            			transition: height 0.2s;
                            		}
                            		</style>';
                            		$s .= '<script src="assets/js/pageScripts/infoDetailEdit.js"></script>';
                            		
                            		echo $s;	
                            

                            ich sehe zwar in der Konsole das diese Datei via get geladen wird... aber wie soll ich sie Debuggen

                            Im Netz habe ich nur die Standardhilfen gefunden also die Scripte die ich in einer normalen html-seite via <script src="assets/js/pageScripts/infoDetailEdit.js"></script> einbinde

                            leider fand ich kein Beispiel in dem erklärt wird wie man eine seite debuggt die viw get gezogen wird

                            Mannnnn ich trau mir wetten dass das Problem ein Einzeiler ist... und dafür hier einen Thread so zu sprengen ist schon der Hit...

                            wieso ist es so unmöglich mir das so so zu schreiben das es funktioniert.. bis dato habe ich mkeine ganze webseite und die ist mittlerweile doch recht umfangreich so hinbekommen und es geht... ohhh wunder...

                            ich begreif dann schon was ich falsch machte... aber so hat das bei mir keinerlei Lerneffekt

                            Grüße Jürgen

                            1. Tach!

                              wahrscheinlich ist der Grund das ich die Seite in der das Script eingebunden wird via Ajax lade

                              Hab ich auch noch nicht gemacht.

                              Mannnnn ich trau mir wetten dass das Problem ein Einzeiler ist... und dafür hier einen Thread so zu sprengen ist schon der Hit...

                              Hab ich ja schon in der Antwort von 14:25 geschrieben, was das Problem an der zitierten Stelle ist. Lösung war auch eine dabei: Weglassen des falschen Parameters.

                              wieso ist es so unmöglich mir das so so zu schreiben das es funktioniert..

                              Das geht, aber nur bis zum nächsten Problem. Du musst verstehen, was da abläuft, was bei welchem jQuery-Funktionsaufruf für Werte übergeben werden müssen und was bei einem Callback entgegengenommen werden kann. Ohne diese grundlegende Wissen wirst du immer wieder an "geht nicht" kommen und sie nicht lösen können. Beispiele sind hilfreich, ohne Zweifel, aber wenn man weder aus der Dokumentation noch aus ihnen die generelle Funtionsweise entnehmen und verinnerlichen kann, bleibt man mehr oder weniger ein Copy-und-Paste-Programmierer.

                              dedlfix.

                2. Hi,

                  Nein, das geht nicht. Ein "warte bitte" gibt es nicht, weder in jQuery noch in Javascript. Es gibt nur Callbacks, die man ausführen lässt, wenn etwas anderes fertig ist.

                  doch, es gibt für den Ajax-Aufruf in jQuery den Parameter "async", den der TO hier sogar auf false setzt. Dies bewirkt, dass der Browser mit der Ausführung des nachfolgenden Codes wartet, bis der Response eingetroffen ist. Was allerdings nicht empfohlen wird, da dann bis zum Response der komplette Browser blockiert ist.

                  Dem TO hilft es hier ohnehin nicht, weil das alert sich ja auch außerhalb es ready-Events befindet.

                  Gruß Stefanie

                  1. Tach!

                    Nein, das geht nicht. Ein "warte bitte" gibt es nicht, weder in jQuery noch in Javascript. Es gibt nur Callbacks, die man ausführen lässt, wenn etwas anderes fertig ist. doch, es gibt für den Ajax-Aufruf in jQuery den Parameter "async", den der TO hier sogar auf false setzt. Dies bewirkt, dass der Browser mit der Ausführung des nachfolgenden Codes wartet, bis der Response eingetroffen ist. Was allerdings nicht empfohlen wird, da dann bis zum Response der komplette Browser blockiert ist.

                    Ah, das "async: false" hatte ich ausgeblendet. Danke fürs aufzeigen. Das ändert einiges. Der success-Callback ist nicht mehr notwendig. Wenn er doch verwendet wird, ändert sich aus Prgrammierersicht nichts im Vergleich zu asynchronen Aufrufen. Jetzt anders bei synchronem Aufruf ist, dass der $.ajax-Aufruf() erst nach dem Empfang der Response endet und als Funktionsergebnis ein (modifiziertes) XHR-Objekt zurückgibt. Das kann man in Empfang nehmen und gleich auf die Eigenschaft responseText zugreifen. Vorher sollte man aber noch selbst den Status prüfen, denn das hätte sonst $.ajax() gemacht, indem es den jeweiligen Callback (success/error) aufruft.

                    var xhr = $.ajax({..., async: false /*kein success: ... */}); console.log(xhr.responseText);

                    Dem TO hilft es hier ohnehin nicht, weil das alert sich ja auch außerhalb es ready-Events befindet.

                    Im Originalposting ja. Aber wenn man es innerhalb der DOM-Ready-Funktion aufruft und success() nicht verwendet, sollte es gehen.

                    Die generelle Frage ist, ob der synchrone Aufruf Punkte bringt. Vermutlich ja, weil die Anwendung durch die nicht vorhandene Texte sowieso nicht benutzbar ist und das ganze Javascript-Zeug auch erst nach success() losläuft. Da kann man gleich synchron warten. Ein asnychroner Aufruf hätte wohl nur den Vorteil, dass man eine Pausenclown-Animation laufen lassen kann.

                    dedlfix.

            2. Hallo

              ich habe das Ganze jetzt in die erste zeile des <body> gehängt es geht nicht ich habe auf allen anderen Seiten diese Variable nicht verfügbar

              Alle anderen seiten werden nur via ajax nachgeladen so dass der Teil mit dem folgenden Script ständig bestehen bleibt

              
              
              <script type="text/javascript">
              var translate = '';
              $.ajax({
              	url: '../../../../translate/ajaxLangScript.php',
              	dataType: 'json',
              	success: function(data) {
              		translate = data[0];
              		},async: false});
              </script>
              
              

              wenn jemand einen kurzen zweileier als Beispiel hätte wäre das super super hilfreich bevor ich hier tagelang mit ellenlangen Threads das Forum fülle

              Danke fürs Entgegenkommen

              Grüße Jürgen Grüße

              1. Tach!

                ich habe das Ganze jetzt in die erste zeile des <body> gehängt es geht nicht ich habe auf allen anderen Seiten diese Variable nicht verfügbar

                Es ist nicht die Reihenfolge entscheidend, in der dein Code notiert ist, sondern die, in der er ausgeführt wird.

                Wenn du synchron jemanden beauftragst, nach dem Wetter zu schauen, woraufhin du dich entscheiden wirst, was du anziehst, dann liegst du solange auf Eis, bis der beauftragte zurückkommt. Wenn du ihn asynchron wegschickst, kannst du nicht einfach mit dem Anziehen beginnen. Du kannst nur jede Menge andere Sachen machen, bei denen du nicht auf Kleidung angewiesen bist. Es kann nun durchaus sein, dass du damit eher fertig bist, als die Antwort kommt, dann ist dein Programm erstmal beendet. Zu keinem Zeitpunkt dürfen im normalen Tagesablauf Tätigkeiten ausgeführt worden sein, die Kleidung benötigen. Erst wenn die Nachricht zurückkommt, kannst du in deinen Kalender eintragen, dass schönes Wetter ist und den Anziehprozess starten und alles weitere, das darauf aufbaut.

                wenn jemand einen kurzen zweileier als Beispiel hätte wäre das super super hilfreich bevor ich hier tagelang mit ellenlangen Threads das Forum fülle

                Du hast das doch auch schon mit der DOM-Ready-Funktion. Du übergibst dem jQuery eine Funktion, in der das drinsteht, was du ausgeführt haben möchtest.

                $( document ).ready(function() { ...} );

                $(document).ready() wird sofort ausgeführt. Inhalt der Funktion kann aber nicht ausgeführt werden, weil die Seite noch nicht fertig gerendert/geladen ist. jQuery merkt sich die übergebene Funktion und erst wenn das DOM-Ready-Event kommt, ruft es deine Funktion auf.

                Alternativ dazu, die Funktion in voller Schönheit direkt zu notieren, kannst du sie auch anderswo stehen haben und dem $(document).ready() nur eine Referenz darauf übergeben. So ähnlich musst du das in deinem success() machen. Entweder den kompletten Code hinschreiben, oder eine Funktion aufrufen, in der der Code steht.

                dedlfix.

      2. Hallo selfmade01,

        bei zeitkritischen Aktionen solltest du nicht mit alert debuggen, nimm statt dessen console.log.

        jQuery(function($) { var translate ;

        $.ajax({         url: '../translate/ajaxLangScript.php',         dataType: 'json',         success: function(data) {           translate = data[0];         },         async: false       });

        alert("das ist test 1 : "+translate['testtext']);

        });

        hier bringt er aber auch ein undefined

        Bist du sicher, dass die success-Funktion auch aufgerufen wird? Bist du sicher, dass in data[0] etwas vernünftiges enthält? Bist du sicher, das der Request wirklich asynchron läuft? Und wenn ja, warum?

        Gruß, Jürgen

  3. Tach!

    ich suche nach einer Möglichkeit eine globale Variable zu nutzen was jedoch nicht funktioniert. Aktuell bekomme ich nur ein undefined.

    Habe ich richtig geraten, dass es sich um die Variable translate handelt und dass das alert() die Stelle ist, auf die du dich beziehst?

    Nachfolgender Code ist gekürzt wiedergegeben:

    
    
    > var translate;
    > $( document ).ready(function() {
    >     $.ajax({
    >        success: function(data) {
    >            translate = data[0];		
    >        },
    >     });
    > alert("das ist test 1 : "+translate['testtext']);
    > });
    > 
    
    

    translate hat erst dann einen Inhalt, wenn der Ajax-Call erfolgreich zurückgekehrt ist. Das ist zum Zeitpunkt des DOM-Ready noch nicht der Fall.

    dedlfix.

    1. Tach!

      Nachfolgender Code ist gekürzt wiedergegeben:

      [Code] translate hat erst dann einen Inhalt, wenn der Ajax-Call erfolgreich zurückgekehrt ist. Das ist zum Zeitpunkt des DOM-Ready noch nicht der Fall.

      Da hab ich die Klammern falsch gelesen/gesetzt. Das alert() kommt ja noch eher als das DOM-Ready, in dem erst der Ajax-Call stattfindet. Das ist noch eine Runde früher als translate einen Inhalt hat.

      dedlfix.

    2. hallo,

      Tach!

      translate hat erst dann einen Inhalt, wenn der Ajax-Call erfolgreich zurückgekehrt ist. Das ist zum Zeitpunkt des DOM-Ready noch nicht der Fall.

      ja genau so ist es. ich beziehe mich auf die "translate".

      da ich diese Variable als erstes benötige (hier steht mein ganzer übersetzter Text drin denn ich via gettext in der ajaxLangScript.php bekomme und mir durch ajax in mein jquery script lade.

      Die variable translate ist also ein array und ich sollte es überall im jeder Funktion verfügbar haben.

      Vielleicht sollte ich das aber auch anders machen... Vielleicht ein Objekt erstellen...

      Oder ?

      Grüße Jürgen