Funktion für AJAX - Problem mit Return

Diskutiere Funktion für AJAX - Problem mit Return im Web Tier Forum; Hallo Leute Ich habe eine Funktion register(), welche eine Funktion checkUser() aufruft, die true oder false zurückgeben soll, je nachdem, ob...

  1. Joggal
    Joggal Neues Mitglied
    Hallo Leute

    Ich habe eine Funktion register(), welche eine Funktion checkUser() aufruft, die true oder false zurückgeben soll, je nachdem, ob der User mit der Email vorhanden (true) oder nicht vorhanden ist (false).

    Ich habe allerdings ein Problem, beim zurückgeben des Returnwertes...

    Hier mein Code:
    Code (Java):
    function checkUser(email) {
       
        var ret;

        $.ajax({
            type : "get",
            url : "../ControllerServlet",
            data : {
                param : "checkUser",
                email : email
            },
            contentType : "application/json; charset=utf-8",
            dataType : "json",
            success : function(data) {
                ret = data.userExists;
            },
            failure : function(data) {
               
            }
        });
       
        alert(ret);

        return ret;
    }
    Ich habe mir mit alert() den Wert von "ret" ausgeben lassen, dieser ist jedoch immer noch "undefined", obwohl ich eig dieser Variable in "success" den Wert zuweise...

    Irgendwie wird das aber ignoriert.

    Weiß hier jemand was ich falsch mache?

    lg
     
  2. Vielleicht hilft dir dieser Java-Kurs hier weiter --> (hier klicken)
  3. gp
    gp Neues Mitglied
    Ajax arbeitet (normalerweise) asyncron, der Wert wird erst gesetzt, wenn die Antwort vom Server da ist. Vielleicht das Eingabefeld erst mal rot hinterlegen und wenn die Antwort kommt auf grün setzen (oder die alert-Ausgabe in der success-funktion einbauen.
     
    Zuletzt bearbeitet: 13. Juni 2015
  4. Joggal
    Joggal Neues Mitglied
    Achja stimmt, das liegt am asynchronen Verhalten... Bräuchte ich da ein Callback oder so, um dann wo anders mit dem Ergebnis weiterarbeiten zu können, und nicht im success bleiben zu müssen? Oder wie geht man da vor?

    Mein Problem ist ja einfach, dass ich gern das Ergebnis "aus dem AJAX Teil herausbekommen" möchte, da ich den AJAX Teil in einer eigenen Funktion ausgelagert habe, und in einer anderen Funktion aufrufe.. Und in der Hauptfunktion würde ich gerne mit dem Ergebnis weiterarbeiten.
     
  5. gp
    gp Neues Mitglied
    Der Success ist ja schon dein Callbach, ruf von dort aus einfach eine von dir geschriebene Function auf.
     
  6. Joggal
    Joggal Neues Mitglied
    Aber ich möchte ja zurück in die erste Funktion, nicht weiter in eine 3. !

    Sprich:
    Funktion a ruft Funktion b auf (funktion b beinhaltet ajax code). Dann möchte ich mein json objekt aus dem success teil auslesen und zurück in funktion a bekommen, um dort wieder weiterarbeiten zu können :D
     
  7. Thallius
    Thallius Bekanntes Mitglied
    Das geht aber nunmal nicht :)

    Es geht nur: Funktion A ruft Funktion B auf. Funktion B kommt zurück ohne ERgebnis und Funktion A läuft irgendwie weiter. Wenn das Ergebnis vorliegt ruft Funktion B die Funbktion C auf.

    So ist das nunmal mit Asynchronität :)

    Gruß

    Thallius
     
  8. Joggal
    Joggal Neues Mitglied
    Okay, schade :D
    Danke aber für eure Hilfe!

    Ich hätte da noch eine andere Frage:
    Ich möchte mehrere Zeilen aus einer DB herausholen, welche ich dann im Browser ausgebe.

    Die Daten werden von einem Servlet aus der Datenbank (stored procedure) abgerufen, und sollen mittels JSON und AJAX dann an den Client weitergegeben werden.

    Wie realisiere ich das am besten? Ich habe einen Ansatz gesehen, wo direkt am Server die Tabelle zusammengebastelt wird, was ich aber ziemlich unenelegant gelöst finde, weil man so die Tabelle nicht wirklich schön formatieren kann und es ziemlich unpraktisch ist, die Tabelle so zusammenzustellen.

    Da wäre es doch besser, die Grundstruktur der Tabelle schon im HTML file zu erstellen, und dann per Ajax jede einzelne Row zurückzugeben und mit js dann einzubauen, oder?

    Jedoch weiß ich nicht ganz, wie ich das so realisiere...

    Kann mir vllt. hier noch jemand helfen? :)
     
  9. gp
    gp Neues Mitglied
    Die Frage ist doch, was willst du eigentlich erreichen? Ich vermute mal, dass dein Eingabefeld manipuliert werden soll (wird rot oder es kommt eine Meldung). Nun, das alles geschieht asyncron in deiner function - eben etwas zeitversetzt. Ein zurück mit "goto" oder so ist (zum Glück) nicht machbar.
     
    Zuletzt bearbeitet: 14. Juni 2015
  10. gp
    gp Neues Mitglied
    Zur Datenbank:
    Ich kenne ja den Anwendungsfall nicht. Normalerweise würde ich die Seite komplett per HTML auf dem Server aufbauen, schön formatieren ist möglich, das sollte nicht das Thema sein.
    Mit AJAX kämen dann dynamische Änderungen ins Spiel. Es kämen eine oder besser alle neuen Zeilen an (oder der komplette Inhalt), per JavaScript würde dann der DOM manipuliert.

    Ich gehe jetzt nicht auf Details ein - dazu fehlt mir die Zeit. Spätestens jetzt kommen Frameworks wie JQuery ins Spiel ...
     
  11. Joggal
    Joggal Neues Mitglied
    Naja also... das Servlet soll lediglich für AJAX Calls dienen. Diese werden mit einem Paremter abgefragt und geben dann die jeweiligen Daten aus der DB zurück an den Client. Im Servlet selbst soll sich kein HTML Code befinden. (unpraktisch weil man hier alles in ein out.println schreiben muss)

    Und jetzt stellt sich aber die Frage, wie ich denn das mache, wenn ich mehrere Zeilen zurückgeben möchte. Eben für eine Tabellenausgabe.
     
Die Seite wird geladen...

Funktion für AJAX - Problem mit Return - Ähnliche Themen

Warum funktioniert das Programm für negative Eingabe nicht?
Warum funktioniert das Programm für negative Eingabe nicht? im Forum Java Basics - Anfänger-Themen
Button funktioniert nicht für Ein-und Auszahlungen?
Button funktioniert nicht für Ein-und Auszahlungen? im Forum AWT, Swing, JavaFX & SWT
getFunktion für Tabellenwerte
getFunktion für Tabellenwerte im Forum Java Basics - Anfänger-Themen
Hashfunktion für Strings
Hashfunktion für Strings im Forum Java Basics - Anfänger-Themen
Funktionierender DarkTheme für Eclipse auf MacOS X
Funktionierender DarkTheme für Eclipse auf MacOS X im Forum IDEs und Tools
Thema: Funktion für AJAX - Problem mit Return