Variable Undefined. aber nicht bei innerHTML?

trage

Mitglied
Tach,

also ich habe folgendes script, ich les den Loginstatus aus. Funktioniert auch eigentlich. Problem ist, wenn ich die Variable in welcher der Status gespeichert ist mit innerHTML ausgeben lasse sie richtig angezeigt wird und wenn ich sie mit einem alert ausgebe ich nur ein Undefined herraus bekomme. Ich vermute mal das es der selbe fehler ist wenn ich auch eine If-Anweisung mache, da diese immer ein False ausgibt.

Naja, hier mald er Code:

Code:
function user_login() {
	var form = $('loginform');
	var inputuser = form['user'];
	var inputpass = form['pass'];
	var output;
	new Ajax.Request('user.inc.php',
		{method: 'get',
		parameters: {
			what: 'login',
			user: Form.Element.getValue(inputuser),
			pass: Form.Element.getValue(inputpass)},
		onSuccess: function (transport){
			output = transport.responseText}
		});
		alert(output);
		$('error').innerHTML = output;
}

gruß trage
 
Probier das mal:
Javascript:
function user_login() {
	var form = $('loginform');
	var inputuser = form['user'];
	var inputpass = form['pass'];
	var output;
	new Ajax.Request('user.inc.php',
		{method: 'get',
		parameters: {
			what: 'login',
			user: Form.Element.getValue(inputuser),
			pass: Form.Element.getValue(inputpass)},
		onSuccess: function (transport){
			output = transport.responseText
			alert(output);
			$('error').innerHTML = output;
		}
	});
}
 
Zuletzt bearbeitet von einem Moderator:
Kleiner Zusatz:

Dein Code war so aufgebaut, dass er den Ajax-Call losschickt und sofort danach
(ohne, dass er es fertig war und "output" gefüllt wird ) alert() aufruft.
Dort ist "output" natürlich undefined, weil der output auch erst befüllt wird, wenn
"onSuccess" gefeuert wurd - also wenn der Server geantwortet hat.

Der Grund, wieso es dann im innerHTML erscheint ist der, dass während Du das alert()-Fenster
auf dem Browser siehst und OK klickst, der Server zwischenzeitlich geantwortet hat und "output"
gefüllt wurde.

Grüße,
MArc
 
Ja danke, das hab ich auch gerade eben herraus gefunden ^^
Ist es nicht möglich die funktion so lange warten zu lassen bis der request fertig ist und sie erst dann weiter läuft?
 

Neue Beiträge

Zurück