[JS]xmlhttp in Firefox: undefined
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
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
<?
function getXml(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
xmlhttp.open("GET", "news.xml",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
if(xmlhttp.status=="200"){
ticker(xmlhttp.responseXML,true);
}
}
}
xmlhttp.send(null);
}
function ticker(xml,update){
var nodes = xml.getElementsByTagName('article');
var i = 0;
setInterval(
function(){
if(i<nodes.length){
document.getElementById('news').innerHTML = nodes[i].text;
i++;
}
else{
update = false;
}
},3000,update==true);
}
function news(){
getXml();
}
window.onload=function(){news();}
?>
function getXml(){
var xmlhttp=false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (E) {
xmlhttp = false;
}
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
xmlhttp = new XMLHttpRequest();
}
xmlhttp.open("GET", "news.xml",true);
xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4) {
if(xmlhttp.status=="200"){
ticker(xmlhttp.responseXML,true);
}
}
}
xmlhttp.send(null);
}
function ticker(xml,update){
var nodes = xml.getElementsByTagName('article');
var i = 0;
setInterval(
function(){
if(i<nodes.length){
document.getElementById('news').innerHTML = nodes[i].text;
i++;
}
else{
update = false;
}
},3000,update==true);
}
function news(){
getXml();
}
window.onload=function(){news();}
?>
Gewijzigd op 01/01/1970 01:00:00 door Tom Beuckelaere
bounce
Probeer ook eens 'console.log(nodes[i])' net voor je document.getElementById('news') regel. Wat geeft die voor uitvoer in de fouten console?
Nog een aanrader: Firebug
Gewijzigd op 01/01/1970 01:00:00 door Jelmer -
Maar ik ben geen javascript guru, ik geef dan ook een conclusie op basis van een voorgevoel, maar ik zou verwachten iets als, gezien ik dit ook gebruik om mijn AJAX compatible te maken voor mozilla en safari.
Code (php)
Maar dat is inderdaad vaak de oplossing voor het probleem. In Firefox bestaat de eigenschap responseXML niet waneer het antwoord geen (geldige) xml is. Dan kan je er alleen in rondploeteren via responseText.
terug voor een DOM node (dus ook in een HTML document).
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
// In je loop
document.getElementById('news').innerHTML = nodeText(nodes[i]);
function nodeText(n) {
return n.nodeValue || n.textContent || n.innerText || n.text;
}
?>
// In je loop
document.getElementById('news').innerHTML = nodeText(nodes[i]);
function nodeText(n) {
return n.nodeValue || n.textContent || n.innerText || n.text;
}
?>