AJAX
Hallo allemaal,
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...
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
XMLHTTPObject.onreadystatechange = change();
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;
}
}
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;
}
}
Bedankt Jelmer, ik heb gedaan wat je gezegd had, alleen blijf ik nog steeds de fout houden en gebeurd er veranderd de inhoud van de div ook niet... Ben ik nog iets vergeten ofzo?
--edit--
typo...
--edit--
typo...
Gewijzigd op 21/02/2006 17:46:00 door Eric Cartman
Na wat geklooi, bleek als eerst dat je script-tag niet geparsed werd. Weg met language, en dan doet hij het. language moet namelijk 'type' zijn.
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>
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.




