[edit]
Het lag aan de xmlhttprequest debugger van Greasemonkey.
[/edit]
Ik was zo bezig met mijn eerste eigen ajax functie. Het moest gewoon een normaal inlog script worden, en het werkt opzich heel redelijk, alleen werkt het niet 100%. Ik heb namelijk het probleem dat de readyState eerst 2 keer de waarde 1 krijgt, daarna 2 keer de waarde 2 vervolgens 3 en daarna
2 keer 4, wat volgens mij niet mag voorkomen. En omdat hij 2 keer de waarde 4 krijgt, wordt de functie die het resultaat verder verwerkt 2 keer aangeroepen.
Mijn vraag is dus, hoe kan ik voorkomen dat de readyState 2 keer 4 word?
De volgende dingen ben ik zeker van:
- serverside werkt alles goed.
- gebruik goede gegevens.
hier staat het online, inloggegevens zijn gewoon ajax en ajax
let trouwens niet op de rare variabel namen, had wat nodig even snel wat nodig, dus had maar wat gedaan.
edit
Ook als ik de pagina die aangeroepen word verwijder (status = 404) blijft hij deze rare waardes geven.
Het lag aan de xmlhttprequest debugger van Greasemonkey.
[/edit]
Ik was zo bezig met mijn eerste eigen ajax functie. Het moest gewoon een normaal inlog script worden, en het werkt opzich heel redelijk, alleen werkt het niet 100%. Ik heb namelijk het probleem dat de readyState eerst 2 keer de waarde 1 krijgt, daarna 2 keer de waarde 2 vervolgens 3 en daarna
2 keer 4, wat volgens mij niet mag voorkomen. En omdat hij 2 keer de waarde 4 krijgt, wordt de functie die het resultaat verder verwerkt 2 keer aangeroepen.
Mijn vraag is dus, hoe kan ik voorkomen dat de readyState 2 keer 4 word?
De volgende dingen ben ik zeker van:
- serverside werkt alles goed.
- gebruik goede gegevens.
hier staat het online, inloggegevens zijn gewoon ajax en ajax
let trouwens niet op de rare variabel namen, had wat nodig even snel wat nodig, dus had maar wat gedaan.
edit
Ook als ik de pagina die aangeroepen word verwijder (status = 404) blijft hij deze rare waardes geven.
HTML:
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
| <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <script type="text/javascript"> var xmlhttp var geebruikersnaam var wachtwoord function XMLHttprequest(){ if(window.ActiveXObject){ xmlhttp= new ActiveXObject("Microsoft.XMLHTTP"); } else if(window.XMLHttpRequest){ xmlhttp = new XMLHttpRequest(); } } function login(){ var text = document.createTextNode("Even geduld, je word ingelogd"); var logindiv = document.getElementById("LoginDiv"); gebruikersnaam = document.getElementById("gebruikersnaam").value; wachtwoord = document.getElementById("wachtwoord").value; while(logindiv.childNodes.length > 0){ logindiv.removeChild(logindiv.childNodes[0]); } logindiv.appendChild(text); zendverzoek(); } function createQueryString(gebruikersnaam, wachtwoord){ var querystring = "gebruikersnaam=" + gebruikersnaam + "&wachtwoord=" + wachtwoord + "&date=" + new Date().getTime(); return querystring; } function zendverzoek(){ XMLHttprequest(); var querystring = createQueryString(gebruikersnaam, wachtwoord); xmlhttp.onreadystatechange = callback; xmlhttp.open("POST", "login.php", true); xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;"); xmlhttp.send(querystring); } function callback(){ alert(xmlhttp.readyState); if(xmlhttp.readyState == 4){ if(xmlhttp.status == 200){ inloggen(); }else{ createForm("Er is geen goede verbinding met de server opgezet, probeer het opnieuw."); } } } function createForm(text){ var text = document.createTextNode(text); var logindiv = document.getElementById("LoginDiv"); while(logindiv.childNodes.length > 0){ logindiv.removeChild(logindiv.childNodes[0]); } var form = document.createElement("form"); form.setAttribute("action", "#"); var text1 = document.createTextNode("gebruikersnaam: "); var input1 = document.createElement("input"); input1.setAttribute("type", "text"); input1.setAttribute("name", "gebruikersnaam"); input1.setAttribute("id", "gebruikersnaam"); var br1 = document.createElement("br"); var br2 = document.createElement("br"); var text2 = document.createTextNode("wachtwoord: "); var input2 = document.createElement("input"); input2.setAttribute("type", "text"); input2.setAttribute("name", "wachtwoord"); input2.setAttribute("id", "wachtwoord"); var input3 = document.createElement("input"); input3.setAttribute("type", "button"); input3.setAttribute("onclick", "login();"); input3.setAttribute("value", "login"); form.appendChild(text1); form.appendChild(input1); form.appendChild(br1); form.appendChild(text2); form.appendChild(input2); form.appendChild(br2); form.appendChild(input3); logindiv.appendChild(text); logindiv.appendChild(form); } function inloggen(){ var xmldoc = xmlhttp.responseXML; var root = xmldoc.firstChild; var gelukt = root.firstChild; var gelukt2 = gelukt.firstChild.nodeValue; var text if(gelukt2 == 1){ //text = "Je bent succesvol ingelogd."; //var logindiv = document.getElementById("LoginDiv"); //logindiv.innerHTML = text; //als het inloggen goed ziet, zie je dit nu dus niet aan een nieuw bericht, maar kan dit zien //doordat de tekst even geduld u word ingelogt blijft staan (heb dit uitgeschakeld om te kijken //of het mss door innerHTML komt, dat het fout gaat) }else{ text = "de combinatie van gebruikersnaam en wachtwoord klopt niet."; createForm(text); } } </script> </head> <body> <div id="LoginDiv"> <form action="#"> gebruikersnaam: <input type="text" name="gebruikersnaam" id="gebruikersnaam"/><br/> wachtwoord: <input type="password" name="wachtwoord" id="wachtwoord" /><br/> <input type="button" value="inloggen" onclick="login();" /> </form> </div> </body> </html> |
PHP:
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
| <?php $username = "****"; $password = "****"; $host = "****"; $dbnaam = "****"; $db = mysql_connect($host, $username, $password) or die(mysql_error()); mysql_select_db($dbnaam, $db) or die (mysql_error()); header("Cache-Control: no-cache, must-relalidate"); header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Content-type: text/xml"); $gebruikersnaam = $_POST["gebruikersnaam"]; $wachtwoord = $_POST["wachtwoord"]; $query = "SELECT count(*) a FROM members WHERE gebruikersnaam = '".$gebruikersnaam."' AND wachtwoord = '".$wachtwoord."';"; $result = mysql_query($query, $db) or die(mysql_error()); $rij = mysql_fetch_array($result); $rij = $rij["a"]; settype($rij, "int"); if($rij == 1){ echo("<login><gelukt>1</gelukt></login>"); }else{ echo("<login><gelukt>0</gelukt></login>"); } mysql_close($db); ?> |
[ Voor 4% gewijzigd door achtbaanfreak op 29-08-2007 19:53 ]