[AJAX] Probleem met IE
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??
Code (php)
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
45
46
47
48
49
50
51
52
53
54
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
45
46
47
48
49
50
51
52
53
54
<?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>
?>
// 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>
?>
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
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??
Bijv. dit:
Code (php)
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?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]
// 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]
Gewijzigd op 01/01/1970 01:00:00 door Zero Dead
het zo doe
Code (php)
Geeft hij een alert dat het goed is gegaan (dus alert() bovenaan in de functie)
als ik het zo doe
Code (php)
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...
Gewijzigd op 01/01/1970 01:00:00 door Arian Stolwijk
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 :-)
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
function GetXmlHttpObject(){
...
return objXMLHttp
alert('GetXmlHttpObject - SUCCES');
}
?>
function GetXmlHttpObject(){
...
return objXMLHttp
alert('GetXmlHttpObject - SUCCES');
}
?>
Zou toch echt zo moeten:
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?php
function GetXmlHttpObject(){
...
alert('GetXmlHttpObject - SUCCES');
return objXMLHttp
}
?>
function GetXmlHttpObject(){
...
alert('GetXmlHttpObject - SUCCES');
return objXMLHttp
}
?>
En hoef je geen "';" meer te gebruiken in JavaScript met AJAX?
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
Hoeft niet, alleen als je meerdere dingen op 1 lijn doet, een nieuwe lijn staat gelijk aan een puntkomma.
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:
en dan met de onderstaande functie een rij toevoegen
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?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);
}
?>
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);
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Rens nvt