Ergebnis 1 bis 10 von 10
  1. #1
    cusp ist offline Grünschnabel
    registriert
    15-08-2010
    Ort
    Bremen
    Beiträge
    5

    return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen, die

    Hi,

    ich bin nicht der Javascript - Expert. Und für einige ist das vermutlich sehr einfach - trozdem habe ich auch bei Googel nix gefunden, weil ich vielleicht auch Schwierigkeiten habe, das Problem zu beschreiben :-)

    Also:

    Ich möchte ein Formular mit onsubmit= return testFunktion() abschicken. Es wird also die testFunktion() aufgerufen, und die soll mir ein Returnwert geben.

    Nun ist aber das Problem, das in der testFunktion() eine folgendes stehet (in etwa):

    Code:
    function testFunktion(){
    
    $.post("/eineURL.php", {aktionsAnweisung: "validateSeriennummer", seriennummer: seriennummer },
     function(data){
       returnwert=data;
       if(returnwert==false){
    	alert("Die Seriennummer darf nur aus zahlen bestehen!");
                                            
                                              //
                                                    hier muß ein return ausgegeben werden....
                                              //
    
       }
    			
    // einzigartigkeit der Seriennummer testen
      $.post("eineURL.php", {aktionsAnweisung: "uniqSeriennummer", seriennummer: seriennummer,   farbe: farbe },
    		function(data2){
    			returnwert=data2;
    			if(returnwert==false){
    				alert("Diese Seriennummer existiert bereits!");
                                             //
                                                    hier muß ein return ausgegeben werden....
                                              //
    
    
    							
    				} 
    			}
    		);		
    	}
      );	
    
    }
    Das Problem ist AJAX - ich mut an den gekennzeichneten Stellen ein return false einfügen. ABER: wenn ich es dort einfüge, bezieht es sich auf die $.post() - Funktion. Es soll aber return von "testFunktion()" geliefert werden.

    Die Idee, dort einfach eine Variabel zu setzen, geht auch nicht, das ja die Variabel ja nur dort (bei success der Ajax-Anfrage) vorhanden ist - sonst ist die ja leer.

    Wie kann ich also einen returnwert an die "Elternfunktion" möchte ich das mal nennen - senden?

    cu

  2. #2
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    vereinfacht
    Code:
    function x() {
      function y() {
        return true;
      };
      return y();
    }

  3. #3
    cusp ist offline Grünschnabel
    registriert
    15-08-2010
    Ort
    Bremen
    Beiträge
    5

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    Hi,

    vielen Dank!

    die Idee ist klar. Allerdings habe ich hier ja eine Annonyme Funktion. Wie geht das da?

    Code:
    function a(){
    
    $.post(param1,param2,function(data){
             Anweisungen der function
             return wert;
        }
    
    
    return was?;
    
    }
    Mein Versuch wird sein (wenn ich gleich wieder am richtigen Rechner bin)


    Code:
    function a(){
    
     return $.post(param1,param2,function(data){
             Anweisungen der function
             return wert;
        }
    }
    Wäre das OK? (Nur weil es bei mir evtl. nacher funktioniert heißt das ja nix)

    Wie man sieht: $.post ist Jquery für AJAX-Verbindung...

    cu

  4. #4
    HTML 4 YOU ist offline Haudegen
    registriert
    23-07-2010
    Beiträge
    508

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    da fehlt ne klammer.

    PHP-Code:
    function a(){

        return $.
    post(param1,param2,function(data){
                
    Anweisungen der function
                return 
    wert;
            });


    Es wäre zudem sinnvoller den return-Wert in eienr Variable, oder in einer vorgefertigten Funktion zu verpacken um die übersicht zu behalten, es seit denn, du nutzt es als closure.

  5. #5
    cusp ist offline Grünschnabel
    registriert
    15-08-2010
    Ort
    Bremen
    Beiträge
    5

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    Hi,

    danke, aber die Klammer wars nicht. Die hatte ich übersehn, aber beim Testen (kann jetzt hier testen...) hatte ich die Klammer schon richtig (keinen Syntax Error).

    Ich habe mal exakt diese Funktion hier ausprobiert:


    Code:
    function testeEingabeform(){
    	var seriennummer;
    	seriennummer=$('#seriennummerEdit').val();
    	
        return $.post("/mat/_phpsites/getLastSeriennummer.php", {aktionsAnweisung: "validateSeriennummer", seriennummer: seriennummer },function (data){
                //Anweisungen der function
                return false;
            });
    
    }
    Das Teil sollte ja IMMER false zurück liefern. Tut es aber nicht.

    Den return wert in eine Variable schmeißen - das hatte ich ja zunächst so geplant. Aber das geht ja nicht, da man ja nur bei sussec eine die Variable füllt. Und wenn ich das so schreibe (verkürzt):

    Code:
    function a(){
     var returnwert
    returnwert=true;
    
    $.post(bla bla, function(data){
     returnwert=false;
    }
    
    return returnwert;
    
    }
    ... dann wird das nix, weil es eben dauert, bis die post-Anweisung bearbeitet ist. Und das Script gibt den returnwert VOR der bearbeitung durch die Funktion function(data) wieder.

    Was ist "closure"?

    cu

  6. #6
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    Jetzt habe ich dich erst richtig verstanden. Was du machen willst ist einfach unmöglich! Du kannst den Wert nicht zurückgeben, du musst ihn in der Callback-Funktion verarbeiten.

  7. #7
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.695

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    Junkee[] hat zum Glück Unrecht. Das ist schon realisierbar (bin mir nicht sicher ob mit jQuery...). Du musst einfach beim AJAX das "A" zu einem "S" machen
    Du brauchst also einfach einen synchronen XMLHttpRequest - sollte eigentlich auch in jQuery drin sein... ich hab' aber KEINE Ahnung ob und wie.

  8. #8
    HTML 4 YOU ist offline Haudegen
    registriert
    23-07-2010
    Beiträge
    508

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    Zitat Zitat von cusp Beitrag anzeigen
    ... dann wird das nix, weil es eben dauert, bis die post-Anweisung bearbeitet ist. Und das Script gibt den returnwert VOR der bearbeitung durch die Funktion function(data) wieder.
    Dann kannst du (gibts bestimmt bei jQuery) eine Funktion nurtzen, die erst NACH dem Post den Return-Wert zurückgibt, oder ggf. mal Googeln.


    Zitat Zitat von cusp Beitrag anzeigen
    Was ist "closure"?
    Eine Closure ist kurz gesagt eine Funktion in einer Funktion. Man kann damit z.B. auf Variablen in schon abgelaufenen äußeren Funktionen zugreifen, damit verzichtet man auf globale Variablen.

    Hier mal ein Beispiel:

    PHP-Code:
    window.onload = function() {
        
        function 
    giveEventHandler() {  // Die Funktion wird aufgerufen und die EventHandeler werden verteilt
            
    var el document.getElementById('test'); 
        
            
    el.onclick = function() { // Funktion wird erst beim klicken auf das Element aufgerufen, wenn die Funktion giveEventHandler() schon vorbei ist

                
    if(el.style.height != 100) { el.style.height 100; } // Und obwohl die Funktion giveEventHandler() schon "abgelaufen" ist, kann die innere Funktion noch auf die "el" Variable zugreifen
                
    else { el.style.height 50; }

            };
        }



    Hoffe ich konnte dir helfen.
    Geändert von HTML 4 YOU (16-08-2010 um 20:36 Uhr)

  9. #9
    Avatar von Junkee[]
    Junkee[] ist offline Lounge-Member
    registriert
    08-05-2009
    Ort
    Leonberg
    Beiträge
    3.169

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    Zitat Zitat von kkapsner Beitrag anzeigen
    Junkee[] hat zum Glück Unrecht. Das ist schon realisierbar (bin mir nicht sicher ob mit jQuery...). Du musst einfach beim AJAX das "A" zu einem "S" machen
    Du brauchst also einfach einen synchronen XMLHttpRequest - sollte eigentlich auch in jQuery drin sein... ich hab' aber KEINE Ahnung ob und wie.
    Habe micht schlecht ausgedrückt. Bei einem asynchronen Ablauf ist das unmöglich.

  10. #10
    Avatar von kkapsner
    kkapsner ist offline Super Moderator
    registriert
    28-03-2008
    Beiträge
    17.695

    AW: return-wert einer Funktion - ABER: in der Funktion wird eine Funktion aufgerufen,

    ... dann hast du Recht..

Ähnliche Themen

  1. Funktion wird nicht aufgerufen
    Von pascal.w im Forum JavaScript
    Antworten: 3
    Letzter Beitrag: 01-07-2009, 11:10
  2. Funktion wird nicht aufgerufen
    Von Max Dhom im Forum JavaScript
    Antworten: 7
    Letzter Beitrag: 19-02-2009, 16:50
  3. Funktion wird nicht aufgerufen
    Von mr.jones im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 09-12-2007, 13:17
  4. Antworten: 2
    Letzter Beitrag: 12-11-2007, 14:34
  5. Funktion wird nicht aufgerufen!
    Von Tolwin im Forum JavaScript
    Antworten: 2
    Letzter Beitrag: 29-11-2004, 12:44

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •