AJAX
Ik ben net eventjes begonnen met AJAX, maar na een uurtje prutsen klopt er nog geen hout van. Ik krijg steeds maar deze fout de Javascript-Console van Firefox:
Fout verzend is not defined
Ik snap echt niet wat ik fout doe, ik weet toch echt zeker dat ik die functie verzend heb gedefeniëerd:
(...)
<script language="text/javascript">
function createHTTPHandler(){
httphandler = false;
if (!httphandler && typeof XMLHttpRequest!='undefined') {
httphandler = new XMLHttpRequest();
}
else {
alert('Sorry, maar ik kan het gewoon niet denk ik');
}
return httphandler;
}
function verzend() {
XMLHTTPObject.open('GET', 'pagina.php?q=1234', true);
XMLHTTPObject.onreadystatechange = change();
XMLHTTPObject.send(null);
}
function change() {
var inhoudDiv = document.getElementById('inhoud');
inhoudDiv.innerHTML = XMLHTTPObject.responseText;
}
var XMLHTTPObject = createHTTPHandler();
</script>
<p onclick="verzend()">Klik hier</p>
<div id="inhoud"></div>
(...)
Wie weet er wel wat er hier fout aan is? En hoe kan ik het oplossen?
De pagina 'pagina.php' geeft overigens gewoon de hash neer van de globale array GET.
--edit--
Klein foutje, had geen object aangemaakt :S, welliswaar blijft het probleem nog steeds bestaan...
Gewijzigd op 21/02/2006 17:14:00 door Eric Cartman
die regel moet zijn
XMLHTTPObject.onreadystatechange = change;
zonder de (). Je wil namelijk niet de functie uitvoeren en z'n return-waarde toewijzen aan onreadystatechange, maar de functie zelf ;)
En pas bij readystate nummer 4 kan je de inhoud van xmlhttprequest.responseText uitlezen, want dan is de request pas klaar. Dus iets erbij als....
function change() {
if(XMLHTTPObject.readystate == 4) {
var inhoudDiv = document.getElementById('inhoud');
inhoudDiv.innerHTML = XMLHTTPObject.responseText;
}
}
En dan, niet vergeten dat javascript case-sensitive is. Dus niet readystate, maar readyState (moest ik ook weer even ontdekken)
Het resutlaat dat ik had, wat wel werkte:
<html>
<head>
<script>
function createHTTPHandler(){
httphandler = false;
if (!httphandler && typeof XMLHttpRequest!='undefined') {
httphandler = new XMLHttpRequest();
}
else {
alert('Sorry, maar ik kan het gewoon niet denk ik');
}
return httphandler;
}
function doeiets() {
XMLHTTPObject.open('GET', 'pagina.php?q=1234', true);
XMLHTTPObject.onreadystatechange = change;
XMLHTTPObject.send(null);
}
function change() {
//alert('Readystate: '+XMLHTTPObject.readyState);
if(XMLHTTPObject.readyState == 4){
var inhoudDiv = document.getElementById('inhoud');
inhoudDiv.innerHTML = XMLHTTPObject.responseText;
}
}
var XMLHTTPObject = createHTTPHandler();
</script>
</head><body>
<p onclick="doeiets()">Klik hier</p>
<div id="inhoud">Hoi</div>
</body>
</html>
Ja, bedankt Jelmer, die doet het wel.
<script type="text/javascript"> had je moeten gebruiken.
Ja, ik weet het, ik weet ook niet hoe ik aan language kom...
Language is ooit gebruikt. Tegenwoordig een afgekeurd attribuut.