Variabeln Wert zuweisen mittels Ajax Aufurf

BlubBlub

Mitglied
HTML:
			function getLoginName()
			{
				var name = '';
				$.ajax({
							type: "POST",
							url: postUrl,
							data: {wanted:"nameInput"},													
							cache:false,	
							
							success: function(nameInput)															
							{
								name = 'mytestname';
							}
				});
				return name;	
			}

alert(getLoginName());

Hi ich habe obige Funktion geschrieben nun wollte ich zu Testzwecken, dass mir nach erfolgreichem Ajax Aufur "mytestname" ausgegeben wird. Leider funktioniert die zuweisung innerhalb des Successfunktion nicht an die lokale Variable name der Funktion getLoginName(). Wie schaffe ich es, dass die Zuweisung gelingt.
 
Denke mal das die Variablen jeweils ihren eigenen Gültigkeitsbereich haben und es sich dadurch um jeweils verschiedene Variablen handelt.

Deklariere die Variable "name" ausserhalb der Funktionen, dann gilt sie (so lange sie nicht in einer Funktion durch eine gleichnamige wieder überschrieben wird) global.
 
Das funktioniert leider auch nicht. Auf Grund der Datenkapselung wäre mir aber auch ne Lösung lieber die keine globale Variable benötigt.
 
Und was passiert wenn du

Code:
function(nameInput)															
    {
        name = 'mytestname';
        return name;
    }

schreibst!?
 
Ihr solltet euch kurz zurück lehnen, inne halten und über den Begriff Ajax nachdenken.

Asynchron heißt, dass die success-Funktion vielleicht irgendwann in der Zukunft aufgerufen wird, wenn vom Server erfolgreich eine Antwort erhalten wurde. Das "return name" findet aber sofort statt.

So würde man es z.B. lösen (ungetestet in deinen Code reingehackt)

Javascript:
function getLoginName(fn) {
	$.ajax({
		type: "POST",
		url: postUrl,
		data: {wanted:"nameInput"},
		cache:false,
		success: function(nameInput) {
			fn('mytestname');
		}
	});
}

getLoginName(function(name) {
	alert(name);
});
 
Zurück