ajax: responseText ist leer

servus.

Ich hab hier eine Funktion in JS, mit welcher ich ein kleines login bauen wollte.
allerdings scheint irgendwo ein fehler drin zu stecken, denn xmlHttp.responseText ist immer ein leerer string, obwohl act.php schön brav „true“ ausgibt (zu testzwecken).
Obwohl ich schon ein funktionierendes Ajax geschrieben habe, finde ich in den Befehlen zum xmlHttp keine abweichung bis auf die parameter, welche aber auch stimmen sollten.

function log()
	{
	var usr = document.getElementById('log_name');
	var pas = document.getElementById('log_pass');
	xmlHttp.open('GET', 'act.php', true);
	xmlHttp.onreadystatechange = function ()
		{
		if(xmlHttp.readyState == 4)
			{
			if (xmlHttp.responseText == "true")
				{
				var d1 = document.getElementById('log');
				var d2 = document.getElementById('msg');
				d1.style.display='none';
				d2.style.display='block';
				var SM = document.getElementById('statemessage');
				SM.value='Login erfolgreich';
				window.setTimeOut('check()',15000);
				} else {
				var SM = document.getElementById('statemessage');
				SM.value='Fehler beim Einloggen';
				}
			xmlHttp.send(null);
			}
		}
	}

bitte um erläuterung, WAS denn nun so falsch ist, und/oder ein gutes AJAX-tutorial.

Ich hab zwar noch nie was mit ajax gemacht
(ist ja aber eigentlich ein js mit erweiterten möglichkeiten), aber bei
[php]xmlHttp.onreadystatechange = function ()[/php]
(zeile 6) braucht nicht jede function auch einen namen?

lg,
n1oB

und du darfst da bei onreadystatechange kein () machen.

wenn bei onreadystatechange die klammern fehlen funktionert es allerdings garnicht, und mit einem funktionsnamen kommt auch dasselbe raus.
das script läuft ja fehlerfrei ab, nur es kommt kein responseText.

problem gelöst, er kann einfach nicht mit get-variablen umgehen.
d.h., das ganze wird per ‚post‘ gelöst, und alles ist ok.
edit:ganz falsch, hab nur das send(null) an die falsche stelle gesetzt.
das muss direkt hinter das open
jetz geht alles per get.

(mindestlänge)

Moin,

if (xmlHttp.responseText == „true“)

ist das nicht eigentlich ein Stringvergleich. Das sollte überhaupt net funktionieren da im responseText ja kein true kommt sondern ein String.
Eine Abfrage ob es geklappt hat sollte wohl eher so aussehen

if(xmlhttp.status == 200 }

wenn du dann noch abfragen willst ob überhaupt was gekommen ist als response kannste

if (xmlHttp.responseText != „“)

Aber bin kein JS Versteher :slight_smile:

Gruss Dracul

die abfrage

if(xmlHttp.responseText == "true")

ist ja auch nur dazu da, um zu überprüfen, ob man auf den dienst zugreifen darf. ansonsten gibt die php-datei nämlich „false“ aus.

das problem ist inzwischen gelöst, und es funktioniert alles perfekt.