Funktion für AJAX - Problem mit Return

Joggal

Aktives 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:
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
 

gp

Aktives 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:

Joggal

Aktives 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.
 

gp

Aktives Mitglied
Der Success ist ja schon dein Callbach, ruf von dort aus einfach eine von dir geschriebene Function auf.
 

Joggal

Aktives 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
 

Thallius

Top Contributor
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
 

Joggal

Aktives 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? :)
 

gp

Aktives 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:

gp

Aktives 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 ...
 

Joggal

Aktives 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.
 

gp

Aktives Mitglied
HTML gehört nicht in Servlets, die leiten klassischerweise für die Ausgabe zu JSP-Seiten weiter (altpacken aber einfach).

Json-Arrays sind die Lösung, die mappen sich recht einfach auf simple Javacript container - aber wie gesagt, jetzt beginnt ein Grundlagenkurs ...
 

Thallius

Top Contributor
HTML gehört doch sowieso nicht in eine Applikation. Dann kann ich ja auch gleich eine Web-App machen und den Browser nehmen. Da brauche ich kein Java...

Ich würde per Ajax nur die Daten als JSON Array holen. Der Rest erledigt die Client Software.

Gruß

Claus
 

gp

Aktives Mitglied
Ja, genau so. Aber so oder so: um ein HTML-Grundgerüst kommst du nicht rum, oder? So als erste Antwort. Das kann natürlich auch später per Ajax gefüllt werden - oder eben sofort über eine JSP-Seite. Ich bin schon ein Freund davon, so viel wie möglich auf Server-Seite zu erledigen. Ohne JavaScript-Frameworks ist das sonst sehr mühsam.
 

Joggal

Aktives Mitglied
Ja klar, im HTML File ist ja schon eine Tabellenstruktur angelegt. Befüllt soll sie aber dann dynamisch werden, je nachdem, welche Option ich auswähle.

Bsp: In einer DB sind verschiedene Motorräder enthalten. Im Browser soll dann mit Tabs zwischen den Arten (MX, Enduro,...) wählbar sein, welche ich anzeigen möchte. Wenn ich jetzt zum Beispiel auf MX drücke, kommt eine Tabelle mit allen MX Modellen (125ccm, 250ccm,..)

Und da war eben meine Frage, wie ich das auf Serverseite realisiere. Ich möchte nämlich nicht direkt am Server die Tabelle zusammenbauen und diese dann als ganzes zurückschicken, sondern dann auf Clientseite mittels JS in einer Schleife die einzelnen Spalten befüllen.

Sprich: Wenn ich meine Stored Procedure aufrufe, soll ich dann am besten das ResultSet durchlaufen und alle einzelnen Rows in einen 2-dimeonsionalen Array speichern, welchen ich dann per JSON an den Client sende?
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
W JSF DataTable - Filter Funktion funktioniert nicht Web Tier 3
Kenan89 Class Funktion mit Ajax rufen Web Tier 13
N Nixsagende Fehlermeldung bei EL-Funktion Web Tier 2
ruutaiokwu HttpServlet konstruktor und init()-funktion? Web Tier 9
B Zurück Funktion Web Tier 8
S EJB Funktion in JSP aufrufen? Web Tier 2
7 Struts iterator index JS-Funktion übergeben?? Web Tier 2
S JavaScript-Funktion aufrufen mit a4j-support?? Web Tier 3
G Platzhalter Funktion Web Tier 2
A JSF Suche Beispiel für Primefaces Tree als Navigation Web Tier 3
S Seite nur aufrufbar machen für eingeloggte User Web Tier 1
R JavaScript für Java Enterprise Entwickler Web Tier 1
G JSF Webanwendung Editor für JSON gesucht Web Tier 1
S JSP Hm... Vorlage für Java Basierende Webseite? Web Tier 0
D Servlet 1 Servlet für alles - Wie Cookies per Ajax? Web Tier 1
R JSF Zugriff für Helpdesk-Mitarbeiter Web Tier 15
I Autocomplete Google Maps für JSF Web Tier 0
W Servlet SPEICHERN UNTER-Dialog für mehrere Dateien Web Tier 4
M JSF Framework für User Management etc. Web Tier 0
D Welches Webframework für REST geeignet Web Tier 1
L java.io.NotSerializableException für domain Objekte - Design Problem? Web Tier 12
M Converter für SelectOneMenu Web Tier 3
J eigene taglib für jsf 2.0 schreiben Web Tier 21
S Empfehlung für stateless Webframework Web Tier 2
J mögliche 'eigene' Konfigurationen für die Web.XML auflisten lassen Web Tier 4
H Singleton für In-Memory-Caching in WebApp Web Tier 4
F Wo und wie Daten die für alle Benutzer bestimmt sind verwalten Web Tier 4
S beste Preis/Leistung für Server Web Tier 3
H Relativer Pfad für XML-Datei in JSP-Anwendung Web Tier 3
S Welcher ansatz für Web Application + Web Service Web Tier 5
M JSF Converter für String to List<String> Web Tier 2
R Servlet Resource laden für SMTP - Session Web Tier 4
T JSF Eigener Converter wird nur für Eingabekomponenten aufgerufen? Web Tier 3
O Welche JSF Implementation ist am besten für mich geeignet ? Web Tier 3
T Sprachenauswahl für Projekt Web Tier 3
M JSF Komponentenframework für Web/JSF? Web Tier 7
M JSF Simple Testklasse für Button - MethodNotFoundException? Web Tier 6
B JSF JSF1.1 @Tomcat 5.5 für ein neues Projekt Web Tier 18
I Anwendungsfälle für OO Vererbungshierarchien bei Webapps Web Tier 4
D Struts Mehrsprachigkeit in textfield für key ja, aber für label nein? Web Tier 4
M Classpath für JPA in Tomcat Webapp: Wie konfigurieren? Web Tier 4
S ClassPath für Servlet Web Tier 3
J Welches Framework für Webentwicklung? Web Tier 13
T Plugins für Eclipse Web Tier 9
T JSF Zwei Listen/Vectoren für f:selectItems verknüpfen - möglich? Web Tier 2
ruutaiokwu JSF nur für die präsentation verwenden? Web Tier 4
S Ein ControllerServlet für andere Servlets - Sinnvoll oder nicht? Web Tier 34
C Webspace bzw. Server für GWT Web Tier 5
O Testframework für Webanwendung? HTMLUnit? Web Tier 3
C CMS für GWT Anwendung Web Tier 2
T SVG für JSF2 Web Tier 8
Java.getSkill() Lerngruppe für Tapestry 5 Web Tier 21
T Template für die ganze Seite Web Tier 6
Spin JSF oder PHP für Web Web Tier 4
M Java Framework für größere Projekte verwenden Web Tier 5
Z Erlaubte Klassen für h:selectOneListbox Iteration? Web Tier 2
R Exception? Was für ein Fehler? Web Tier 3
J DataScroller: rowCount für Folgeseiten übernehmen Web Tier 2
M Tomcat - Mehrere Verzeichnisse für die jsp Web Tier 12
N JMX MBean für JBoss 4.2.2 Web Tier 4
E Mime-Type für unbekanntes Programm Web Tier 6
M Best Practice für "Teilnahmebediengung akzeptieren" Web Tier 2
M JSP Custom Tag für Bilder Web Tier 14
H Gibt es für das message-bundle eine Standard - Ordnung? Web Tier 2
J Welcher WebServer(-anbieter) für Servlets? Web Tier 5
N Webfrontend für vorhandenes Programm Web Tier 2
A Einfaches Filter-Servlet für Benutzer-Validierung Web Tier 3
R <fmt:formatDate> und 2 Zeichen für den Wochentag? Web Tier 2
T Ajax / Javascript Plugin für Eclipse Web Tier 1
T Was nehmen für eine Datenbankapplikation mit Webinterface Web Tier 5
G wert für hiddenfield per javascript setzten Web Tier 4
K Escape Charakter für EL Web Tier 4
leifg Parameter für Tags aus String lesen (JSP 1.2) Web Tier 2
N JSF: Servlet für Bilder: Verbindung zu Spring Service ? Web Tier 1
S Mehrere Styleklassen für Tabellenreihen Web Tier 4
pkm Probleme mit einem AJAX-Call in einem dynamischen Webprojekt Web Tier 15
S AJAX/RestController Post Problem Web Tier 18
J JSF/JEE6 asynchronie Statusmeldungen per ajax Web Tier 1
J Wicket: Füllen von Textarea via AJAX irgendwo auf der PAGE Web Tier 1
S JSF mit Ajax? Web Tier 3
V Wie baue ich eine Ajax Webanwendung? Suche Beispielanwendung (UML) eines AJAX Service Web Tier 0
P JSF Ajax aktualisiert Seite neu Web Tier 2
L JSF Composit Component mit ajax funktioniert nicht. Web Tier 4
M Ajax Fehler zur Laufzeit Web Tier 5
T JSF Primefaces: DataTable Ajax Update - Weiterleitung von anderer Seite Web Tier 11
S JSF SelectOneMenu - Probleme mit AJAX Web Tier 6
S JSF ComboBox mit JSF 2.0/ajax Web Tier 4
P JSF tag "ajax" not found Web Tier 3
M JSF DataTable refreshen mit Ajax? Web Tier 5
R JSF Mit Ajax ganze Seite neu laden Web Tier 2
J Ajax ist undefiniert Web Tier 3
P JSF AJAX render wird nicht ausgeführt Web Tier 4
M JSF Ajax Command Link Web Tier 2
X Seite wird mit AJAX neu geladen Web Tier 4
J JSF AJAX-Aufruf ohne Komponente Web Tier 4
S Richfaces 4.0 Ajax Waitingpanel Web Tier 2
G JSF 2x h:selectManyCheckbox ohne duplikate Auswahl/selectManyCheckbox und f:ajax Web Tier 3
P JSF Login per Ajax validieren. Was ist der Beste Weg? Web Tier 4
S Ajax Request verhindert forward? Web Tier 8
P JSF Ajax refresh nach Linkklick Web Tier 4

Ähnliche Java Themen

Neue Themen


Oben