Ajax Inhalt in Variable schreiben...

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

  • Ajax Inhalt in Variable schreiben...

    Hi ho!

    Nehmen wir mal folgendes Script:
    Code:
    var a = null;
    function bla() {
    	a = "Hallo Welt!";
    }
    bla();
    document.write(a);
    Damit würde mir ja "Hallo Welt!" ausgegeben werden. Nun ist mein Script ne runde Komplexer. Und zwar lade ich via XMLHttpRequest eine Sprachdatei, und möchte diese anschließend in einer Variable speichern:
    Code:
    var language = null;
    
    window.onload = function() {
        load_lang(true, null);
    }
    
    function load_lang(run,dom) {
        if(run == true) {
            call = "load_lang";
            createRequest("ajax.php?call=load_lang&lang=de", "load_lang");
        } else {
            if(dom != '') {
                username = dom.getElementsByTagName("lang_username")[0].firstChild.nodeValue;
            }
        }
    }
    Im Prinzip habe ich hier das selbe wie oben: Wenn run = false ist, wird HTMLHttpRequest ausgeführt, mit dem die SprachXML eingelesen wird. Von dieser aus wird nun load_lang erneut aufgerufen mit run = true, sowie die XML übergeben. Anschließend lese ich via getElementsByTagName einen Wert aus, und speicher ihn in die Variable username.

    Problem ist hier, dass username anschließend null ist. Mache ich innerhalb der load_lang funktion ein document.write(username), bekomme ich "Benutzername" ausgegeben. Mache ich document.write(username) außerhalb der funktion, ist username = null.

    Wieso wird der Wert der XML jetzt nicht in der Variable gespeichert?

    Und was mich im allgemeinem interessieren würde, welcher Weg ist besser/vorteilhafter:

    1) Sprachdatei komplett einlesen, in z.B. einem Array speichern, und dann mit JS darauf zugreifen
    2) Jeweils nur bei Bedarf die Sprachvariablen abrufen, wodurch ich die Sprachdatei praktisch immer wieder neu laden würde

    Danke schonmal

  • #2
    Re: Ajax Inhalt in Variable schreiben...

    Wieso wird der Wert der XML jetzt nicht in der Variable gespeichert?
    Du hast die Lokalität von Variablen noch nicht ganz verstanden. SelfHtml hilft.

    1) Sprachdatei komplett einlesen, in z.B. einem Array speichern, und dann mit JS darauf zugreifen
    1 ist die bessere Lösung. Du sagst ja auch schon
    wodurch ich die Sprachdatei praktisch immer wieder neu laden würde
    und das wäre ja Käse!

    Kommentar


    • #3
      Hi!

      Habe den Text vorher auch schon gelesen, aber irgendwie werd ich da nicht ganz schlau draus. Wenn ich eine Variable außerhalb einer Funktion deklariere, oder innerhalb einer Funktion OHNE var davor, so ist diese global. Deklariere ich sie mit var innerhalb einer Funktion, so ist diese lokal.

      Im Script habe ich nun var username = null; ganz am Anfang außerhalb jeglicher Funktionen deklariert, also müsste diese entsprechend global sein oder nicht? Irgendwie blick ich das gard nicht, sorry...

      Kommentar


      • #4
        Im Script habe ich nun var username = null; ganz am Anfang außerhalb jeglicher Funktionen deklariert, also müsste diese entsprechend global sein oder nicht? Irgendwie blick ich das gard nicht, sorry...
        So ist es. Das sind aber Grundlagen und globale Variablen in der Regel schlechter Stil!

        Kommentar

        Lädt...
        X