Avatar billede kongfjong Nybegynder
09. oktober 2008 - 11:00 Der er 43 kommentarer og
2 løsninger

IE7 fejl: documentElement

Hej

Jeg har siddet i nogle dage nu, og skulle lave noget Google Map søgning, ud fra udtræk af db, og output er XML. Det er en omgang Ajax (JavaScript), og jeg har haft problemer med blank tegne og mange andre. Nu er db-problemerne dog løst men IE7 og 6 melder alligevel fejl at documentElement er null eller ikke et objekt.

Når man kører den php fil der laver xml-dokumentet direkte, før man er perfekt dok:

http://www.flush-it.dk/xml/getXMLData.php

Og det samme når man validerer går det også rigtig godt:

http://validator.w3.org/check?uri=http%3A%2F%2Fwww.flush-it.dk%2Fxml%2FgetXMLData.php

Jeg forstår simpelthen ikke hvorfor IE ikke vil acceptere det, når FF kører fint igennem...

Koden der henter dataen:

fileXML = "http://www.flush-it.dk/xml/getXMLData.php";

GDownloadUrl(fileXML, function(data) {
alert(data);
var xml = GXml.parse(data);

var markers = xml.documentElement.getElementsByTagName("marker");

Kan I hjælpe jeg er rimeligt desperat...:)
Avatar billede roenving Novice
09. oktober 2008 - 11:09 #1
Hvad sker der, hvis du bruger document i stedet ?-)
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 11:16 #2
bare xml.document.getElemen.....?
Avatar billede roenving Novice
09. oktober 2008 - 11:21 #3
Ja, jeg ved det ikke er valid xml-binding, men jeg har en mistanke om at det er det IE ikke kan lide !-)
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 11:21 #4
Det virkede desværre ikke...
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 11:22 #5
Jeg overvejede om man i stedet for kunne fange det med brug af getElementsByTagName i stedet for?
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 11:37 #6
Det sære er faktisk, at når jeg alerter data kommer der fint xml ud...
Avatar billede roenving Novice
09. oktober 2008 - 11:58 #7
Hvilken type er de data så ?-)
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 12:30 #8
Type?
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 12:30 #9
Altså i db er de sat til UTF-8
Avatar billede roenving Novice
09. oktober 2008 - 12:34 #10
Er din xml-variabel af datatypen XMLDocument ?-)
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 12:39 #11
uh hvordan tjekker jeg det?
Avatar billede olebole Juniormester
09. oktober 2008 - 16:30 #12
<ole>

Hvad sker der, hvis du skriver:
GDownloadUrl(fileXML, function(data) {
alert(data);
var xml = GXml.parse(data);
alert(xml.nodeType)

- men jeg forstår ikke kommentaren (09/10-2008 11:37:10). Hvordan alert'er du data? Hvad gør du?

/mvh
</bole>
Avatar billede kongfjong Nybegynder
09. oktober 2008 - 17:23 #13
Det virker sørme nu. Det er svært at fortælle hvad der skete fra det ikke virkede til det virker nu, for umiddelbart gjorde vi ikke det store, om noget overhovedet:)

Men tak for hjælpen:)
Avatar billede jokkejensen Novice
09. oktober 2008 - 18:01 #14
tjek udv :)

/J
Avatar billede olebole Juniormester
09. oktober 2008 - 18:27 #15
jokkejensen >> hvad er 'udv'?
Avatar billede jokkejensen Novice
10. oktober 2008 - 12:29 #16
Sorry, det er udvikleren.dk

Fejlen skyldes at GDownloadUrl ikke "venter" på request til xml er færdig. Mozilla håntere det åbenbart fint.

At det pludseligt virker skyldes at xml data bliver cachet i browseren !

Jeg har debugget vha at bede broweren vente et par sekunder før den tilgår xmlDocumentet.

Koden kongfjong viser er et direkte copy paste fra google maps api, jeg har selv brugt, men hos google afvikles den ved window.onload, om IE så bedre håndtere det ved jeg ikke, har kun selv brugt "inline" markeres på mine maps, da det ofte er CMS systemer jeg abrejder med, og at skulle lave en ekstern kilde her (som jo nok er best practice) er ofte en omvej i den verden.

Vh
/J
Avatar billede jokkejensen Novice
10. oktober 2008 - 12:30 #17
Avatar billede kongfjong Nybegynder
10. oktober 2008 - 12:51 #18
Okay, det var da en bizar opførsel:) Dvs. jeg havde været bedre stillet med at erstatte den gamle kode og brugen af GDownloadUrl, med min egen ajax-funktion der tjekker på readystate = 4?
Avatar billede kongfjong Nybegynder
10. oktober 2008 - 15:06 #19
Det sjove er dog, at det virker nu i IE selvom jeg har slettet cachen og genstartet browseren:)
Avatar billede jokkejensen Novice
11. oktober 2008 - 02:45 #20
Du kan jo altid bare poste et link, så kan vi let bekræfte det virker.
Avatar billede jokkejensen Novice
11. oktober 2008 - 02:51 #21
if (q != 0) {
95 ////alert('line 93');
96 fileXML = "http://www.flush-it.dk/xml/getXMLData.php?q=" + q;
97 }
98 else {
99 ////alert('line 97');
100 fileXML = "http://www.flush-it.dk/xml/getXMLData.php";
101 }
102
103 GDownloadUrl(fileXML, function(data) {


C/P af din kode, hvor ligger det readystate check ? - jeg kan dog se at funktionen nu afvikles onload.. som demonstreret på google.
Avatar billede kongfjong Nybegynder
11. oktober 2008 - 13:33 #22
C/P?:) readystate checket må jo ligge i GDownloadUrl funktionen alt andet lige. Det er jo en indbygget funktion i Google Maps APIen, så har svært ved lige at tjekke den...
Avatar billede olebole Juniormester
11. oktober 2008 - 16:13 #23
Hvis man gider, kan man jo tjekke Google's API. Jeg har selv gjort det med en masse af deres metoder, men indrømmer, at det godt kan være et pænt stykke arbejde (men også ret interesseant, da man får indsigt i, hvad det egentlig er, man sidder og laver). Du begynder med:
    alert(GDownloadUrl)

- eller endnu bedre skrive koden til en popup. Derfra kan du så se, hvad du må alerte (udskrive) for at komme frem til et readyState-tjek  =)
Avatar billede jokkejensen Novice
12. oktober 2008 - 07:41 #24
"med min egen ajax-funktion der tjekker på readystate = 4?"


Trode du havde lavet dit eget check...
Avatar billede jokkejensen Novice
12. oktober 2008 - 07:41 #25
c/p copy paste :) nók min egen udgave
Avatar billede olebole Juniormester
12. oktober 2008 - 16:31 #26
De gange, jeg har brugt GoogleMaps, har jeg aldrig observeret lignende fejl - og jeg har heller ikke hørt andre omtale problemet. Jeg er ret sikker på, du laver en eller flere fejl - og at problemet næppe er, at IE ikke venter  =)
Avatar billede olebole Juniormester
12. oktober 2008 - 17:20 #27
Efter halvanden sammenhængende tanke er idéen om, at et af verdens mest bundlinje orienterede firmaer skulle have udgivet en webapplikation, som ikke fungerer i den ultimativt mest udbredte browser, naturligvis helt forkastet. Det er helt indlysende, der må være en anden forklaring  ;o)

Det viser sig da også, forklaringen er en anden ... du bruger iso-8859-1, som forlængst er deprecated i JavaScript og uanvendelig i enhver Ajax-forbindelse.

Brug i stedet utf-8 i din XML-fil - men vær opmærksom på, det ikke er nok at skifte XML-deklarationen! Dokumentet skal også gemmes som utf-8 - hvorved alle specialtegn (f.eks. æ, ø og å) ændrer sig og derfor skal ændres tilbage igen.

Det sidste gad jeg ikke gøre med hele dit XML-dokument, så jeg kortede det ned for denne test:
    http://www.dengodekode.dk/GMaps/test.html

- og her er XML-dokumentet:
    http://www.dengodekode.dk/GMaps/test.xml

- works like a charm  ;o)
Avatar billede olebole Juniormester
12. oktober 2008 - 17:23 #28
- så du skal nok lægge en ny kommentar på Udvikleren, hvor du giver den korrekte forklaring, jokkejensen  =)
Avatar billede olebole Juniormester
12. oktober 2008 - 17:28 #29
Hvis du tester med iso-8859-1 og kun medtager de tre første marker-elementer i din XML-fil, vil du opdage, det også virker. Det skyldes, der ikke er specialtegn i de tre elementer.

Det fjerde indeholder derimod 'ø' - og vil få applikationen til at knække  =)
Avatar billede kongfjong Nybegynder
12. oktober 2008 - 19:32 #30
olebole, men hvorfor alerter den så netop object i ie nu, selvom jeg bruger iso? og jeg skal nok holde mig til utf fremover hæhæ;)
Avatar billede olebole Juniormester
12. oktober 2008 - 20:02 #31
Den kommentar forstod jeg vist ikke. Prøv igen  =)
Avatar billede kongfjong Nybegynder
12. oktober 2008 - 20:26 #32
Det var med reference til din test, hvor du alerter DocumentElement:) Der skriver den Object, hvilket den også gør på min løsning, selvom det er ISO:)
Avatar billede olebole Juniormester
12. oktober 2008 - 20:27 #33
Jeg kan ikke se, hvad du laver - så hvordan skulle jeg kunne svare? Link ...?  =)
Avatar billede olebole Juniormester
12. oktober 2008 - 20:30 #34
- og med mindre Google's API bruger deprecated JavaScript (og de adskiller sig desværre ikke længere fra andre 'skodkodere', så det er ikke utænkeligt), kan iso-8859-1 slet ikke bruges med Ajax  =)
Avatar billede jokkejensen Novice
15. oktober 2008 - 12:13 #35
http://www.flush-it.dk/xml/getXMLData.php <XML
http://www.flush-it.dk/public/findfacilitet.php?q=%E5rhus <WEB

Kongfjongs XML virker fint, fiddler og firebug siger iso og ikke utf... så længe leve google's skod kodet api.. LOL..

Som jeg tidligere har skrevet er det løst, vha at køre det onload på vinduet. Som du også selv gør i dit eksempel. Prøv at afvikle funktionen før window.onload, og se hvad der sker - om dit xml er gemt i utf8 eller iso, gxml parser en tekst streng så jeg forstår ikke din bekymring. Dog kan der være forskel på dine 800bytes frem for kongfjots 53kb php genereret.

Og jo, debugger man Gdownload, kommer dette først:
function Jf(a,b,c,d){var e=If();if(!e)return false;if(b)e.onreadystatechange=function(){if(e.readyState==4){var g=Kf(e),h=g.status,i=g.responseText;b(i,h);e.onreadystatechange=F}};

Hvorfor det ikke virker i IE7 hvis det ikke afvikles onload, aner jeg ikke. Men det er vel heller ikke det spørgsmålet går på?

Og hvad er det du siger jeg skal ændre min kommentar til ole ? - At google's APIs dokumentation siger noget andet end det egentligt gør ifølge dig eller ?

http://code.google.com/apis/maps/documentation/reference.html#GXml

Og selvfølgelig skal et stort API som google maps skrive deprecated JS, som vi andre gør til ældre browsere. Men det er altid lettere at finde fejl i andres kode, især når man ikke viser noget selv.

Vh.
Avatar billede jokkejensen Novice
15. oktober 2008 - 12:15 #36
offtopic, er der lidt tegnsæt fuck tilbage i din nederste headline på din side..

Vh.
Avatar billede olebole Juniormester
15. oktober 2008 - 12:41 #37
"Kongfjongs XML virker fint, fiddler og firebug siger iso og ikke utf... " >> Den sætning forstår jeg ikke, hvad du mener med.

Nej, der er ikke forskel på min fil og den oprindelige fil. De fejler begge, præcis når de kommer til det første specialtegn - det omtalte 'ø'. Det sker ikke ved skift af tegnsæt. Jeg forstår ikke, hvad det er, du er i tvivl om  =)

"Og selvfølgelig skal et stort API som google maps skrive deprecated JS, som vi andre gør til ældre browsere" >> Ja, nu er det jo nok et spørgsmål om temperament. Ja, jeg synes også, man skal skrive kode (og i visse tilfælde også deprecated), som er bagudkompatibel, så gamle browsere kan forstå det. Her er der dog tale om, at et API skriver deprecated kode for at være bagudkompatibel med 'gamle' kodere, som ikke evner følger med udviklingen indenfor deres fag.

Der er efter min mening kæmpe forskel på en gammel browser, der ikke kan lære nyt - og en 'gammel' koder, der ikke gider følge udviklingen i de faglige standarder. Dem mener jeg ikke, det er nødvendigt at tørre op efter.

"Men det er altid lettere at finde fejl i andres kode, især når man ikke viser noget selv." >> Ja, primitive mennesker håber vel på, andre ikke skiller sig væsentligt ud fra dem selv. Hvad er det helt præcist, du mener, jeg skal bevise overfor dig, jeg kan skrive, før du ikke længere mener, du er i din gode ret til at bestemme, jeg ikke må udtale mig om andres kode i dette forum?
Avatar billede jokkejensen Novice
15. oktober 2008 - 21:22 #38
Hey Ole.

Nogen gange tror jeg det bare er fordi du ikke kan se dine egne fejl, men lad det nu ligge. Fejlen skyldes at googles script skal afvikles efter dom er indlæst, som google demonstrere, som du gør i dit eksempel men som KongFjong ikke gjorde. Jeg forsøger at demonstrere for dig, at KongFjong's map's kode virker, - og det er med et iso-8859 XML ark, som du jo så kraftigt (outta the blue) benægter er muligt. Men det er det nu engang med googles SKOD kodet api - det kan måske drille for dig.

At du ligefrem begynder at skrive "works like a charm", jamen flot, du har implementeret google maps - Hvad vil du have vi skal sige? - det har intet what so ever at gøre med spørgsmålet. Eksempler på eksistrende working gmap implementeringer er faktisk spild af tid at lave, dem er der andre af.

Min sammenligning med ældre browsere var måske lidt forkert - Men at google skulle præsentere et API der ikke skulle forsøge at varetage skod kode bedst muligt virker for mig latterligt, når google's marked ikke kun ligger hos folk der bliver smålidderlige når de ser god kode, men mere hos dem der ønsker googles fremragende services præsenteret. Samtidigt er der andre steder i denne, for nogen lille, verden der ikke har får serveret IT ind med morgenmaden - men steder hvor der stadig er brug for web, der kan drage nytte af det med deres skod kode. - Det jeg nok forsøger at sige, er at der er andre end folk med dine kompetencer der skal være med.

Du skal intet bevise over for mig, og du må da udtale dig som du har lyst, syntes bare du skulle slappe lidt af med at være så skide nedladende over for andres arbejde og forsøg på at hjælpe - Det var måske skønnere hvis du bidrog eller holdte din kæft. Første nævnte er du ret skarp til, nr 2 driller lidt.

Vh.
Avatar billede olebole Juniormester
15. oktober 2008 - 23:37 #39
Avatar billede olebole Juniormester
15. oktober 2008 - 23:51 #41
Den eneste forskel på de to HTML-filer er, at deres Content-Type meta og den encoding, de er gemt med - samt naturligvis hvilken XML-fil, de loader.

Den eneste forskel på de to XML-filer er XML-deklarationen og det tegnsæt, de er gemt med.

Er du nu helt sikker på, det kun er mig, der ikke kan se mine fejl? Kan du forklare mig, hvor jeg begår fejlen i disse eksempler?
Avatar billede kongfjong Nybegynder
16. februar 2009 - 21:36 #42
Ole og jokke, I kan ligge et svar så I kan få point :)
Avatar billede olebole Juniormester
17. februar 2009 - 09:43 #43
;o)
Avatar billede jokkejensen Novice
17. februar 2009 - 10:57 #44
svar ! :) - men ellers bare luk lortet :)
Avatar billede olebole Juniormester
17. februar 2009 - 13:34 #45
Ja, er der overtryk, kommer den slags jo ud helt af sig selv!
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