Hoi,
Ik gebruik onderstaande code om wat te selecteren tussen gegevens uit de database... Dit selecteren gebreurt in do.php en dat vraag ik dus op via het XMLHttpRequest ding... Hij werkt in Firefox (2.0) en Opera (9.1). Maar niet in Internet explorer (6 en 7)

Ik gebruik hetzelfde op http://www.startprima.nl/dochters.php en daar doet hij het wel... Wat er mis gaat in IE is dat hij niks doet en onder in de status balk zegt: Fout op de pagina

Hoe kan ik dit oplossen??

<?php
// De <?php staat er even voor de kleurtjes ;)
<script type="text/javascript">

var xmlHttp

function GetXmlHttpObject(){

var objXMLHttp = null
if(window.XMLHttpRequest){
objXMLHttp = new XMLHttpRequest()
}

else if(window.ActiveXObject){
objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP')
}
return objXMLHttp
}

// De dochters volgorde
function ShowDochters(str){
if(str.length == 0){
str = ''
}

xmlHttp = GetXmlHttpObject()
if(xmlHttp == null){
alert('Uw browser is niet geschikt voor dit systeem');
return
}

url = 'do.php?dochtersadmin=ja&volgorde='+str;
xmlHttp.onreadystatechange = DochtersChanged
xmlHttp.open('GET',url,true)
xmlHttp.send(null)


}


function DochtersChanged() {

if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"){
document.getElementById('dochters').innerHTML = xmlHttp.responseText;
}else{
document.getElementById('dochters').innerHTML = 'Even gedult a.u.b. ...';
}
}



//-->
</script>
?>
Ik zie zo snel de fout niet. Ik gebruik precies dezelfde functie om een activeXoject/httpRequest object aan te maken en dat werkt. Misschien ligt het aan de enkele quotes bij new ActiveXObject('Microsoft.XMLHTTP') dat zouden misschien dubbele moeten worden??
Kijk waar de fout zit, zet bij sommige functies alerts...

Bijv. dit:

<?php
// De <?php staat er even voor de kleurtjes ;)
<script type="text/javascript">

var xmlHttp

function GetXmlHttpObject(){ 
alert('GetXmlHttpObject - SUCCES');
    var objXMLHttp = null
    if(window.XMLHttpRequest){
        objXMLHttp = new XMLHttpRequest()
    }
    
    else if(window.ActiveXObject){
        objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP')
    }
    return objXMLHttp
} 

// De dochters volgorde 
function ShowDochters(str){
alert('ShowDochters - SUCCES');
    if(str.length == 0){ 
        str = ''
    }
    
    xmlHttp = GetXmlHttpObject()
    if(xmlHttp == null){
        alert('Uw browser is niet geschikt voor dit systeem');
        return
    } 
    
    url = 'do.php?dochtersadmin=ja&volgorde='+str;
    xmlHttp.onreadystatechange = DochtersChanged 
    xmlHttp.open('GET',url,true)
    xmlHttp.send(null)
    
    
} 


function DochtersChanged() { 
alert('DochtersChanged - SUCCES');

    if (xmlHttp.readyState == 4 || xmlHttp.readyState == "complete"){ 
        document.getElementById('dochters').innerHTML = xmlHttp.responseText; 
    }else{
        document.getElementById('dochters').innerHTML = 'Even gedult a.u.b. ...'; 
    } 
} 



//-->
</script>
?>


Ik zou ook overal ';'s gebruiken, dit maakt sommige dingen makkelijker((nog)niet in bovenstaande code)...

[edit]Deze code:

    xmlHttp.onreadystatechange = DochtersChanged 
    xmlHttp.open('GET',url,true)
    xmlHttp.send(null)


Moet dat niet in eena ndere volgorde?

    xmlHttp.open('GET',url,true)
    xmlHttp.onreadystatechange = DochtersChanged
    xmlHttp.send(null)
[/edit]
Als ik

het zo doe
<?php
function GetXmlHttpObject(){

alert('GetXmlHttpObject - SUCCES');
var objXMLHttp = null
if(window.XMLHttpRequest){
objXMLHttp = new XMLHttpRequest()
}

else if(window.ActiveXObject){
objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP')
}
return objXMLHttp
}
?>
Geeft hij een alert dat het goed is gegaan (dus alert() bovenaan in de functie)

als ik het zo doe
<?php
function GetXmlHttpObject(){

var objXMLHttp = null
if(window.XMLHttpRequest){
objXMLHttp = new XMLHttpRequest()
}

else if(window.ActiveXObject){
objXMLHttp = new ActiveXObject('Microsoft.XMLHTTP')
}
return objXMLHttp
alert('GetXmlHttpObject - SUCCES');
}
?>
Dus alert onderaan in de functie doet hij het niet...

Ik heb dit altijd het zelfde gelaten... en gebruik het op meerdere pagina's waar IE het wel goed doet...
Ik heb nu in het fouten raport van IE gelezen dat op regel 97 (in het script wat ik poste 31) de variabele url niet bestaat... of niet kan worden gebruikt ofzo...

Ik denk ik zet gewoon na
var xmlHttp
nog een keertje var url

Maar toen gaf IE de volgende fout: Onbekende runtime error
en dat was op de regel van document.getElementById('dochters').innerHTML = '<tr><td>Even gedult a.u.b. ...</td></tr>';
Ja dat krijg je als je innerHTML gebruikt :-)
Ik weet niks van AJAX (behalve iets met voetbal), maar dit:

<?php
function GetXmlHttpObject(){

...
return objXMLHttp
alert('GetXmlHttpObject - SUCCES');
}
?>

Zou toch echt zo moeten:

<?php
function GetXmlHttpObject(){

...
alert('GetXmlHttpObject - SUCCES');
return objXMLHttp
}
?>

En hoef je geen "';" meer te gebruiken in JavaScript met AJAX?
Hoeft niet, alleen als je meerdere dingen op 1 lijn doet, een nieuwe lijn staat gelijk aan een puntkomma.
Jos, de term "hoeft niet" kun je beter vergeten denk ik... Het is een kleine moeite, en het is veel overzichterlijker om wel elke regel met een ; af te breken.

Arian, Lees even goed de post van Martijn... Die geeft je namelijk een heel duidelijk aanwijzing dat de fout mogelijk niet in de GetXmlHttpObject functie zit

Verder kun je innerHTML heel goed gebruiken, maar dan moet je wel even aangeven wat voor element je gebruikt. Volgens mij probeer je "<tr><td>tekst</td></tr>" toe te voegen aan een tabel, en dat is natuurlijk een hopeloos iets. In een tabel zelf zit namelijk geen HTML code, alleen in de cellen...

Als je hier via javascript iets wilt toevoegen kun je het bijvoorbeeld op de volgende manier doen:

<?php
<table>
<tbody id="tabel">
</tbody>
</table>
?>

en dan met de onderstaande functie een rij toevoegen

<?php
function rijToevoegen (tekst) {
var tabel = document.getElementById("tabel");
var rij = document.createElement("tr");
var cell = document.createElement("td");
cell.innerHTML = "Even geduld a.u.b.";

// Cell aan rij koppelen, rij aan tabel koppelen
rij.appendChild(cell);
tabel.appendChild(rij);
}
?>

Reageren