• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

ajax: responseText ist leer

Status
Für weitere Antworten geschlossen.

DerKaisa

Neues Mitglied
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.

Code:
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.
 
Werbung:
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 ()
(zeile 6) braucht nicht jede function auch einen namen?

lg,
n1oB
 
Werbung:
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.
 
Zuletzt bearbeitet:
AJAX mit PHP Beschleunigte Webapplikationen für das Web 2 Addison-Wesley von Ralph Steyer schrieb:
Beachten Sie, dass Sie beim Binden an die onreadystatechange-Eigenschaft bei der Funktion keine Klammern angeben! Es handelt sich hier um eine sogenannte Funktionsreferenz und um keinen gewöhnlichen Funktionsaudruf
(mindestlänge)
 
Werbung:
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 :)

Gruss Dracul
 
die abfrage
Code:
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.
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben