Hi,
im Grunde genommen arbeitet mein kleines Script ja wie folgt:
1. Nach dem Klick auf den Submit-Button werden die Daten validiert
2. a) Daten sind valide, User wird angemeldet, eine Session wird gestartet oder
b) Daten nicht valide, Fehlermeldung anzeigen
Ich hätte jetzt gedacht, die Validierung erfolgt per AJAX und im Anschluss wird das Formular entweder "ganz normal" abgeschickt ODER eine das Abschicken wird unterbunden und stattdessen eine Fehlermeldung angezeigt.
Du musst also umdenken. Dein ajax_validate() muss false zurückgeben, damit das Formular nicht abgeschickt wird. In deiner Callback-Funktion cb_handle_login() reagierst du dann entsprechend auf die Antwort des Servers. Wenn du auf eine andere Seite weiterleiten möchstest, kannst du das bspw. mit
location.href = 'duBistEingeloggt.php';
machen.
Du hingegen meinst, ich sollte besser auch das erfolgreiche Anmelden per AJAX steuern und nicht nur das Fehlerhandling? In diesem Fall aber bräuchte ich doch gar kein onSubmit Handler mehr, oder? Sondern es würde reichen, einen normalen Button mit einem onClick zu belegen und alles weitere dann im JS-Teil abzuwickeln. Habe ich das richtig verstanden?
Mich irritiert die Abfrage
if(XMLHTTP.readyState==4 || XMLHTTP.readyState==0)
vor dem Absetzen des (Login-)Requests etwas. Was bezweckst du hiermit? Bzw. wie schaut der restliche Code dazu aus?
Das stammt von dieser Seite:
http://www.dynamicajax.com/fr/AJAX_Hello_World-271_290_322.html
Ich verwende es in der Funktion, die bei mir noch über das onSubmit aufgerufen wird:
function ajax_validate(user,pass) {
if(XMLHTTP.readyState==4 || XMLHTTP.readyState==0) {
XMLHTTP.open("GET","login_validation.php");
XMLHTTP.onreadystatechange = cb_handle_login;
XMLHTTP.send(null);
}
return false;
}