[JS]xmlhttp in Firefox: undefined

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Tom Beuckelaere

Tom Beuckelaere

23/08/2007 14:43:00
Quote Anchor link
Ik ben zo wat aan het experimenteren met ajax en onderstaand werkt met een xml bestand. De code werkt perfect in IE en Opera maar in Firefox krijg ik 'undefined' ipv 'article 1'. Hoe komt dit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?

        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
 
PHP hulp

PHP hulp

24/04/2024 04:12:37
 
Tom Beuckelaere

Tom Beuckelaere

24/08/2007 13:18:00
Quote Anchor link
bounce
 
Jelmer -

Jelmer -

24/08/2007 15:08:00
Quote Anchor link
Zegt je firefox fouten console (onder het menuutjes 'extra's' te vinden) ook iets erover?

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 -
 
Danny Roelofs

Danny Roelofs

24/08/2007 15:38:00
Quote Anchor link
Om het te onderstrepen, de FireBug plugin voor mozilla firefox is voor mij een uiterst mooie oplossing om mijn Javascript implementatie 's te testen. Sinds ik dit gebruik was de drempel weg om zelf Javascript code te ontwikkelen.

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)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
if (window.XMLHttpRequest) {
      httpRequest = new XMLHttpRequest();
      if (httpRequest.overrideMimeType) {
         httpRequest.overrideMimeType('text/xml');
      }
   }
 
Jelmer -

Jelmer -

24/08/2007 16:19:00
Quote Anchor link
Dat kan je overigens ook fixen door de volgende code toe te voegen aan je PHP script dat door je XHR object wordt opgevraagd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
header('Content-type: application/xml');
// of
header('Content-type: text/xml');
?>


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.
 
Jos

Jos

25/08/2007 15:58:00
Quote Anchor link
Onderstaande functie geeft in elke browser de tekstinhoud
terug voor een DOM node (dus ook in een HTML document).

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
}

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.