Auf Return warten erzwingen

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

  • Auf Return warten erzwingen

    Hallo!

    Ich habe mich gerade ein wenig mit AJAX beschäftigt. Jetzt habe ich eine Funktion geschrieben, die mithilfe der SAJAX-Bibliothek Werte vom Server holt. Das ganze dauert natürlich ein wenig.
    Die Funktion sieht schematisch dargestellt etwa so aus:

    PHP-Code:
    function hole_wert () {
       
    //Der Code, der den Wert vom Server holt
       
    var wert Der geholte Wert;
       
    window.alert (wert); //--> gibt den richtigen Wert aus
       
    return (wert);
    }

    wert hole_wert();
    window.alert (wert);  //--> gibt 'undefined' aus 
    Wie ich schon im Quelltext angegeben habe, gibt das zweite Alert, das außerhalb der Funktion liegt 'undefined' aus. Ich nehme an, dass das daran liegt, dass das holen der Werte kurze Zeit in Anspruch nimmt und der Javascript-Interpreter einfach schonmal weiter macht. Dadurch wurde der Wert noch nicht zurückgegeben und 'wert' ist 'undefined'. Kann man den Interpreter zwingen mit dem fortfahren zu warten, bis die Funktion etwas zurück gibt??

    Edit: Kann es daran liegen, dass sich die Funktion rekursiv noch ein zweites Mal ausführt, bevor sie etwas zurück gibt?
    Zuletzt geändert von Mathis; 06.09.2007, 19:33.

  • #2
    z.b. firefox
    PHP-Code:
    ajax_obj = new XMLHttpRequest();
    if (
    ajax_obj.readyState == 4
    damit kannst du überprüfen, ob du eine antwort bekommen hast.


    gruß
    peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      onreadystatechange net vergessen
      Die Milch bleibt ranzig!

      Kommentar


      • #4
        ... und die globale Variable bitte auch deklarieren!

        Kommentar


        • #5
          Kann es daran liegen, dass sich die Funktion rekursiv noch ein zweites Mal ausführt, bevor sie etwas zurück gibt?
          Liegt ganz einfach daran, dass du die Var innerhalb der Funktion deklarierst und diese damit global nicht bekannt ist. Wenn du sie so wie du willst verwenden möchtest, dann musst du die Deklaration der Var ausserhalb der Funktion machen.
          ...kurze Zeit in Anspruch nimmt und der Javascript-Interpreter einfach schonmal weiter macht
          Der Interpreter macht einfach Zeile für Zeile. Wenn die Fkt noch nix geliefert hat, dann macht er auch nicht weiter. Bevor der return der Fkt gemacht ist, geht JS keine Zeile weiter.
          Kann es daran liegen, dass sich die Funktion rekursiv noch ein zweites Mal ausführt, bevor sie etwas zurück gibt?
          Wo siehst du denn einen rekursiven Aufruf der Fkt ?
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar

          Lädt...
          X