Ajax Login Controle

Pagina: 1
Acties:

  • ZpAz
  • Registratie: September 2005
  • Laatst online: 23:50
Ik ben bezig om een CMS systeem te maken, nu wou ik via Ajax de inlogprocedure afhandelen. Dit lukt op zich redelijk, alleen loop ik tegen een fout aan die ik niet helemaal snap. Als ik de responseText van mijn xmlhttp object alert is die leeg, terwijl hij volgens firefbug (een plugin voor firefox) helemaal niet leeg is.

Omdat hij in de alert wel leeg is (als ik de alert in de onreadystatchange neer zet, waar ik ook controleer of de state wel 4 is.) Gaat hij automatisch verder, terwijl dat eigenlijk helemaal niet moet.

Nu geeft het bestand wat de gebruikersnaam en wachtwoord controleert altijd 'false' terug, maar en controleer ik of die true is, anders mag er niet gesubmit worden. Maar dit gebeurt toch?

Hoe kan ik dit oplossen?

De code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/* Create XMLHTTPRequest Object*/
 function makeXmlHttp(){
      var xmlhttp = null;
      if(window.XMLHttpRequest){
      xmlhttp = new XMLHttpRequest();
      }else{
           try{
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
           }catch(e){
                window.alert("Uw browser ondersteunt het XMLHttpRequest object niet!");
           }
      }
      
      return xmlhttp;
 }

function checkLogin(frm) {  
    //Show errorbox
    document.getElementById('error').style.display = 'block';
    
    //Check if all fields are filled
    if(frm.username.value == "" || frm.pass.value == "") { // empty
        document.getElementById('error').innerHTML = 'Niet alle velden zijn ingevult.';
        return false; } 
    
    /*Notify user*/
    document.getElementById('error').innerHTML = 'Even gedult...';
    var xmlhttp = makeXmlHttp();
    xmlhttp.open("GET", "loginCheck.html", true);
 
    xmlhttp.onreadystatechange = function() {
        if(xmlhttp.readyState == 4){
                if(xmlhttp.responseText == 'true') { // password and username correct
                return true; }
            else { //password and username incorrect
                document.getElementById('error').innerHTML = 'Gebruikersnaam en of wachtwoord onjuist.';
                return false; }
        }
    }
    
    xmlhttp.send('');   
    
}


Het probleem is dus dat hij niets controleert (behalfe het gedeelte of alle vakjes niet leeg zijn), en gewoon submit.

Hier een screenshot van firebug in FF.

http://zpaz.strictstudio.nl/firebug.jpg

de functie checkLogin() wordt aangeroepen in de onSubmit van mijn formulier.

Hier een live voorbeeld:
http://82.73.213.158:8000/StrictCMS/login.php

Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 11:13

crisp

Devver

Pixelated

Je doet een asynchroon request; de returnvalue van je onsubmit handler is gewoon 'undefined'

Overigens zou ik geen GET doen maar een POST en het lijkt me ueberhaupt handig om de username en password ook mee te sturen ;)

[ Voor 42% gewijzigd door crisp op 11-03-2007 15:54 ]

Intentionally left blank


  • ZpAz
  • Registratie: September 2005
  • Laatst online: 23:50
ja de username en password moet ik nog meesturen, het is nu gewoon een plain html filetje, hoe kan ik er voor zorgen dat de returnvalue wel goed is?

edit, ik heb het probleem opgelost,

Ik heb alle return value's uit de functie gehaald en helemaal onderaan return false geplaatst.

Bij de onreadystatechange als de uitkomst goed is heb ik frm.submit(); gedaan.

Nu werkt het wel naar behoren :)

Iig bedankt voor het meedenken :)

[ Voor 49% gewijzigd door ZpAz op 11-03-2007 19:49 ]

Claude: "Domain patterns emerge from iteration, not generation." - Tweakers Time Machine Extension | Chrome : FF