Ik heb het volgende probleem met gebruik van Ajax.
Als ik gegevens wil verzenden voor validatie lijkt de informatie steeds 1 poging achter te liggen.
Bij het laden van de pagina wordt meteen al een Ajax post gedaan. De verzonden data en het resultaat geef ik weer in een 2 divjes (input en output). Dit is dan
Mijn vraag is dus: hoe kan het dat de informatie pas bij de tweede actie wordt verzonden en niet zoals verwacht direct?
De php pagina werkt naar behoren, aangezien ik na daadwerkelijke verzending wel de correcte gegevens terug krijg. Daarbij zal deze als het geen correcte informatie binnen krijgt een foutmelding terug sturen. Het probleem zal dus moeten zitten in de JavaScript functie. Mijn vraag is dus, wat gaat er mis?
De script die ik er voor gebruik:
[edit]
Om te debuggen probeerde ik een alert te doen vlak voor de return in de AjaxPostData. Deze alert zou dan de gegevens moet weergeven die terug gekomen zijn. In plaats daarvan krijg ik een foutmelding met de omschrijving:
Ik heb geëxperimenteerd met een while-loop die zou moeten wachten totdat de readyState niveau 4 heeft bereikt, maar dat resulteerd in een vastlopend script. Dat is dus ook geen optie.
Als ik gegevens wil verzenden voor validatie lijkt de informatie steeds 1 poging achter te liggen.
Bij het laden van de pagina wordt meteen al een Ajax post gedaan. De verzonden data en het resultaat geef ik weer in een 2 divjes (input en output). Dit is dan
Vervolgens stuur ik informatie, in dit geval een username, na het invullen van het invulveld om te controleren. Het resultaat hiervan is dan:input:
action=0
output:
undefined
Die laatste output had ik dus verwacht bij het laden van de pagina!input:
action=1, username=telefoontoestel
output
{"username":false,"password":false,"loggedin":false,"data":"preparing; action=0;"}
Mijn vraag is dus: hoe kan het dat de informatie pas bij de tweede actie wordt verzonden en niet zoals verwacht direct?
De php pagina werkt naar behoren, aangezien ik na daadwerkelijke verzending wel de correcte gegevens terug krijg. Daarbij zal deze als het geen correcte informatie binnen krijgt een foutmelding terug sturen. Het probleem zal dus moeten zitten in de JavaScript functie. Mijn vraag is dus, wat gaat er mis?
De script die ik er voor gebruik:
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
44
45
46
47
48
| <!-- var XMLObject, responseData; function createHTTPHandler(){ XMLObject = null; if(window.XMLHttpRequest) XMLObject = new XMLHttpRequest(); else if (window.ActiveXObject) XMLObject = new ActiveXObject(); else document.location.href('index.php?version=old'); if(XMLObject == null) document.location.href('index.php?version=old'); return true; } function checkState(){ if (XMLObject.readyState == 4){ if (XMLObject.status == 200){ responseData = XMLObject.responseText; } else { responseData = "Problem retrieving data:" + XMLObject.statusText; } } } function AjaxGetData(URL){ createHTTPHandler(); XMLObject.onreadystatechange = checkState; XMLObject.open("GET", URL, true); XMLObject.send(null); return true; } function AjaxPostData(URL, data){ createHTTPHandler(); XMLObject.open("POST", URL, true); XMLObject.onreadystatechange = checkState; XMLObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); XMLObject.send(data); return true; } //--> |
[edit]
Om te debuggen probeerde ik een alert te doen vlak voor de return in de AjaxPostData. Deze alert zou dan de gegevens moet weergeven die terug gekomen zijn. In plaats daarvan krijg ik een foutmelding met de omschrijving:
Hieruit maak ik op dat de fout dus in de checkState functie zit. Dat deze dus niet afwacht totdat de status niveau 4 heeft bereikt. Een alert geeft dan ook aan dat we nog maar bij niveau 1 zijn. Hoe moet dit dan gedaan worden?De gegevens die nodig zijn voor deze bewerking zijn nog niet beschikbaar
Ik heb geëxperimenteerd met een while-loop die zou moeten wachten totdat de readyState niveau 4 heeft bereikt, maar dat resulteerd in een vastlopend script. Dat is dus ook geen optie.
[ Voor 13% gewijzigd door telefoontoestel op 08-05-2009 13:42 ]
telefoontoestel