Avatar billede andreas13_fam Nybegynder
23. maj 2009 - 11:19 Der er 8 kommentarer og
1 løsning

XMLPasser

Hej eksperter
Jeg har prøvet at lave en XMLpasser som selv kan afgøre hvilket "modul" der skal bruges til at indlæse.
Desvære virker det ikke jeg for den samme fejl i både IE8 og FF3.

Fejl: XMLDOM.getElementsByTagName is not a function
Kildefil: http://localhost/AJAX/opretbruger/JavaScript.js
Linje: 16

Linje 16 er markeret, men er ikke linje 16 i linket (58): http://pastebin.com/m33c6d4d9
Avatar billede ebusiness Nybegynder
23. maj 2009 - 16:00 #1
Lige et par ting, localhost er en henvisning til den lokale computer, din første link virker derfor kun på din egen computer. Og det hedder en parser, ikke en passer.

Anyway, den metode du anvender er beregnet til at du giver den et filnavn, hvorefter den selv vil hente filen og parse den, du prøver i stedet at give den en XML fil som du selv har hentet ind.

Her er et eksempel hvor parseren modtager XML filen som en streng: http://www.w3schools.com/XML/tryit.asp?filename=tryxml_parsertest2
Avatar billede andreas13_fam Nybegynder
23. maj 2009 - 18:34 #2
Det med localhost vidste jeg nu godt, jeg havde bare ikke tænkt mig at uploade den til internetttet, da den så ville erstatte nogle andre filler.

Men hensyn til til det du siger om at den henter der fra en fil så var tanken den at functionen tjekkede om "value" endte med .xml og derved var en fil.

Har skrævet lidt kommentare omkring hvordan det er jeg gerne vil have det skal virke, og markeret de 3 "passer" som kan bruges.

http://pastebin.com/f383690ef

PS: jeg for lige uploadet alle de mange filler så du kan se det selv (ikke localhost ;) )
Avatar billede andreas13_fam Nybegynder
23. maj 2009 - 18:52 #3
Sådan, fejlen ses her: http://www.netkogeren.a-mweb.dk/index.php?profil=opret når man trykker på Opret Bruger.

følgende alert kommer:
alert('test') viser at opretbrugerajax() er startet
alert(params) viser POST som bliver sendt.
alert(xmlHttp.responseText) viser variable som kommer fra server.
alert(XMLDOM...) viser en test, vil normalt ikke indeholde noget.
Avatar billede ebusiness Nybegynder
23. maj 2009 - 20:27 #4
Ok, så fandt jeg fejlene. For Internet Explorer har du kun lavet funktionen til at hente en fil. For andre browsere har du bare kaldt parseFromString funktionen, men det er returværdien du skal bruge og returnere.

Her er en korrigeret udgave af din funktion:

function xmlParser(value){
    var xmlVar
    if (window.ActiveXObject){
        //alert('test - XMLPasser ATIVX');
        xmlVar=new ActiveXObject("Microsoft.XMLDOM");
        xmlVar.async="false";
        if (value.match(/\.xml$/)){
            xmlVar.load(value);
        }else{
            xmlVar.loadXML(value);
        }
    }else{
        if (value.match(/\.xml$/)){
            xmlVar=document.implementation.createDocument("","",null);
            xmlVar.async="false";
            xmlVar.load(value);
        }else{
            var parser=new DOMParser();
            xmlVar=parser.parseFromString(value,"text/xml");
        }
    }
    return xmlVar;
}
Avatar billede andreas13_fam Nybegynder
23. maj 2009 - 21:18 #5
Ja ok det giver mening, jeg syntes dog stadig ikke jeg kan få det til at virke, her er den nye: http://pastebin.com/f76a8a52d
Avatar billede andreas13_fam Nybegynder
23. maj 2009 - 21:21 #6
PS: det er IE der giver problemmer:

Detaljer om fejl på websiden

Brugeragent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0; WOW64; Trident/4.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
Tidsstempling: Sat, 23 May 2009 19:20:52 UTC


Meddelelse: 'xmlDoc.getElementsByTagName(...).0' er null eller ikke et objekt
Linje: 15
Tegn: 4
Kode: 0
URI: http://netkogeren.a-mweb.dk/AJAX/opretbruger/JavaScript.js
Avatar billede ebusiness Nybegynder
23. maj 2009 - 22:09 #7
Det lyder som om at det <root> element som du leder efter ikke forefindes i din XML fil.
Avatar billede andreas13_fam Nybegynder
24. maj 2009 - 14:55 #8
Ja men det findes du kan selv prøve her:  http://www.netkogeren.a-mweb.dk/index.php?profil=opret
desuden virker det også fint i FireFox.
Avatar billede andreas13_fam Nybegynder
24. maj 2009 - 15:07 #9
Når søgte lidt på microsofts hjemmeside og fandt ud af man kunne indsætte:

        if (xmlDoc.parseError.errorCode != 0) {
          var myErr = xmlDoc.parseError;
          alert("You have error " + myErr.reason);
        } else {
          alert(xmlDoc.xml);
        }
og så ville man få en forklaring.
PS: det var min DTD ;)

Tak for hjælpen ebusiness
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester