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