Aangezien ik nog niet eerder met XMLHTTPRequest aan de gang ben geweest, is dit een geheel nieuw terrein voor mij waar ik nog niet in zijn geheel uitkom.
Op de server wordt de volgende XML gegenereerd met daarin alle beschikbare pagina's op de server met daarbij diverse kenmerken die van belang kunnen/moeten zijn aan de client side.
Vervolgens wordt deze XML opgehaald met XMLHTTPRequest met behulp van de volgende functie (welke ik op deze site heb gevonden):
Nadat het resultaat is opgehaald wordt vervolgens het resultaat met onderstaande functie verwerkt:
Echter zoals je kan zien staan er de nodige alerts tussen aangezien ik wat aan het debuggen was. Ik krijg het niet voor elkaar om lijst op te halen en van de verschillende pagina's informatie toe te voegen aan een array. Ik kan bijvoorbeeld nog wel een alert opvragen van het 'response', maar wanneer ik verder ga met 'page_list = response.getElementByTagName('page_list');' gebeurt er niets meer. Iemand een suggestie wat ik fout aan het doen ben!?
Op de server wordt de volgende XML gegenereerd met daarin alle beschikbare pagina's op de server met daarbij diverse kenmerken die van belang kunnen/moeten zijn aan de client side.
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| <page_list> <page id="1"> <name>Welkom</name> <type>Content</type> <hierarchy>1</hierarchy> <active>True</active> <owner>1</owner> </page> <page id="3"> <name>Contact Us</name> <type>Content</type> <hierarchy>1.1</hierarchy> <active>True</active> <owner>1</owner> </page> </page_list> |
Vervolgens wordt deze XML opgehaald met XMLHTTPRequest met behulp van de volgende functie (welke ik op deze site heb gevonden):
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| function loadXMLDoc(url) { // branch for native XMLHttpRequest object if (window.XMLHttpRequest) { req = new XMLHttpRequest(); req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(null); // branch for IE/Windows ActiveX version } else if (window.ActiveXObject) { req = new ActiveXObject("Microsoft.XMLHTTP"); if (req) { req.onreadystatechange = processReqChange; req.open("GET", url, true); req.send(); } } } |
Nadat het resultaat is opgehaald wordt vervolgens het resultaat met onderstaande functie verwerkt:
JavaScript:
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
| function processReqChange() { // Ga alleen verder wanneer de readyState "complete" is if (req.readyState == 4) { // Alleen verder wanneer de status ook daadwerkelijk "OK" is alert('Readystate is OK'); if (req.status == 200) { alert('Requeststate is 200'); // Verwerking van het ontvangen XML document response = req.responseXML; page_list = response.getElementByTagName('page_list'); page_id = response.getElementsByTagName('page'); // Haal info op en stop deze in een array for(i=0; i<page_id.length; i++){ id = page_id[i].getAttribute('id') name = page_id[i].getElementByTagName('name').firstChild.data; version = page_id[i].getElementByTagName('hierarchy').firstChild.data; alert('naam : ' + name + '\n' + 'Hierarchy: ' + version); } } else { alert("There was a problem retrieving the XML data:\n" + req.statusText); } } } |
Echter zoals je kan zien staan er de nodige alerts tussen aangezien ik wat aan het debuggen was. Ik krijg het niet voor elkaar om lijst op te halen en van de verschillende pagina's informatie toe te voegen aan een array. Ik kan bijvoorbeeld nog wel een alert opvragen van het 'response', maar wanneer ik verder ga met 'page_list = response.getElementByTagName('page_list');' gebeurt er niets meer. Iemand een suggestie wat ik fout aan het doen ben!?
[ Voor 17% gewijzigd door Woudloper op 19-08-2005 10:42 ]