Ik ben sinds kort mij aan het inlezen op AJaX, ik wil natuurlijk graag meedoen aan de hype. Erg interessant. Na verschillende tutorials en wat dingen gelezen te hebben op GoT ben ik maar eens aan de slag gegaan. Ik wil als eerste wat simpele dingen inladen en in div-jes gooien mbv javascript en XML.
Op zich lukt dit best. Alleen zo gauw ik de functie aanroep vanaf een knop, loopt het geheel vast. Als ik de functie aan een init functie knoop werkt hij dus wel. Ook op te merken, in FF werkt het WEL, maar IE doet dat dus nIEt. (geen discussie over IE aub).
Als eerste heb ik geprobeert de functie vanachter een knop aan te roepen mbv:
Met de variabele de locatie van het bestand. Deze is correct, wat met een regeltje alert(HttpObj.responseText) geeft ie keurig de inhoud weer.
Ik gebruik de volgende functies in js:
Hierbij heb ik ook een functieaanroep in de init functie. Dit werkt WEL en laat dus alles netjes zien in de contentdiv, die als globale variabele bestaat.
Erg vreemd omdat het via de INIT wel werkt. Ik krijg de error in IE, object vereist. Dit gebeurt in de onderstreepte regel bij het aanroepen van de getNode functie. Ook als ik de hele regel versimpel (dus niet met tussenvars) geeft hij dezelfde fout, wat niet onlogisch is natuurlijk.
var tContent = '<div id="contentTitle">' + getNodeValue(root, 'title') + "</div>\n";
Op zich lukt dit best. Alleen zo gauw ik de functie aanroep vanaf een knop, loopt het geheel vast. Als ik de functie aan een init functie knoop werkt hij dus wel. Ook op te merken, in FF werkt het WEL, maar IE doet dat dus nIEt. (geen discussie over IE aub).
Als eerste heb ik geprobeert de functie vanachter een knop aan te roepen mbv:
code:
1
| <a href="javascript: getContent('xmlDocs/adminPage.xml')">Admin</a> |
Met de variabele de locatie van het bestand. Deze is correct, wat met een regeltje alert(HttpObj.responseText) geeft ie keurig de inhoud weer.
Ik gebruik de volgende functies in js:
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
| var HttpObj;
function init(){
HttpObj = getHttpObj();
dMenu = document.getElementById('menu');
dContent = document.getElementById('content');
dStatus = document.getElementById('status');
getContent('XMLdocs/adminPage.xml');
}
function getHttpObj(){
var x=(window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest());
return x;
}
function getContent(filename) {
HttpObj.open('GET', filename);
HttpObj.onreadystatechange = buildContent;
HttpObj.send(null);
}
function buildContent(){
if(HttpObj.readyState==1){
showDivObj(dStatus, 'Bezig met zoeken van verbinding...');
}
if(HttpObj.readyState==2){
showDivObj(dStatus, 'Verbinding gemaakt, data wordt maakt...');
}
if(HttpObj.readyState==3){
showDivObj(dStatus, 'Verbinding gemaakt. Data gemaakt. Bezig met laden...');
}
if(HttpObj.readyState==4){
var response = HttpObj.responseXML;
var root = response.documentElement;
alert(HttpObj.responseText);
[u]var tContent = '<div id="contentTitle">' + getNodeValue(root, 'title') + "</div>\n"; [/u]
tContent = tContent + getNodeValue(root, 'content') + "\n";
dContent.innerHTML = tContent;
hideDivObj(dStatus);
}
return null;
}
function getNodeValue(obj,tag){
return obj.getElementsByTagName(tag)[0].firstChild.nodeValue;
} |
Hierbij heb ik ook een functieaanroep in de init functie. Dit werkt WEL en laat dus alles netjes zien in de contentdiv, die als globale variabele bestaat.
Erg vreemd omdat het via de INIT wel werkt. Ik krijg de error in IE, object vereist. Dit gebeurt in de onderstreepte regel bij het aanroepen van de getNode functie. Ook als ik de hele regel versimpel (dus niet met tussenvars) geeft hij dezelfde fout, wat niet onlogisch is natuurlijk.
var tContent = '<div id="contentTitle">' + getNodeValue(root, 'title') + "</div>\n";
"Chaos kan niet uit de hand lopen"