29. maj 2006 - 11:10Der er
42 kommentarer og 2 løsninger
IE fejler parsing af XML
Jeg har på http://cykeltjek.notenet.dk lavet et lille AJAX-eksempel, hvor man ved at ændre på "producent", får en række mærker fra databasen over i den næste <select>. Det virker som det skal i Firefox, men i IE får jeg bare en tom liste - ingen javascript fejl, heller.
Ved i hvad fejlen kan være? Mit XML kan se sådan ud: <?xml version="1.0" encoding="ISO-8859-1" ?> - <optionsList> <option id="0" name="Alle" /> <option id="7" name="BMX" /> <option id="5" name="Road" /> <option id="6" name="Shopper" /> </optionsList>
Mens mit javascript ser sådan ud:
function changeBikeModels(xmlFile) { var myEl = document.searchForm.bikeModel;
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Jeg er på vej udaf døren, så hvis ikke jeg svarer, er det derfor. Jeg kan kikke på det senere på dagen
Synes godt om
Slettet bruger
29. maj 2006 - 12:07#4
Jeg har alertet xmlFile.getElementsByTagName('option')[0].getAttribute("id"), hvor jeg får at vide, at der ikke er noget objekt e.l.. Hvis jeg alerter xmlFile får jeg [object], mens jeg i Firefox får noget [object xml ... ]. Hvilket vel betyder, at det kan være en fejl i mit "parser"-script?
Synes godt om
Slettet bruger
29. maj 2006 - 12:09#5
Ved at ændre det til dit forslag, virker det på samme måde nøjagtigt - IE giver mig bare en blank <select>, mens Firefox smider de korrekte værdier deri.
lige før jeg returnerer mit xml-objekt, får jeg "1" tilbage i Firefox, og "0" i IE, hvilket vel betyder, at xml-dokumentet slet ikke bliver leveret rigtigt i IE?
Ved ikke om det har betydning... Siden leveres som: text/html - Ved ikke om det hjælper ved levering som text/xml... <?php header("Content-type: text/xml"); ?>
... Jeg skal nok have leget lidt med det i aften (kan heller ikke forstå den ikke virker) - har også testet lidt lokalt og når til samme resultat som dig: XML objectet bliver ikke loadet ... indholdet er dog loadet hvis man bruger responseText - så det tyder på at IE har lidt problemer med parsing af filen. Tror (måske) det er problemet med content type - da det burde virke iflg.: http://developer.mozilla.org/en/docs/AJAX:Getting_Started :/
SEO Consultants Directory Check Server Headers - Single URI Results
Server Response: http://cykeltjek.notenet.dk/fetchData/?toFind=bikeModels&selected=2 HTTP Status Code: HTTP/1.1 200 OK Date: Mon, 29 May 2006 12:08:20 GMT Server: Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-16 mod_ssl/2.0.54 OpenSSL/0.9.7e mod_perl/1.999.21 Perl/v5.8.4 X-Powered-By: PHP/4.3.10-16 Set-Cookie: PHPSESSID=9b898dde5950ceb494da14ee3322fade; path=/ Expires: Thu, 19 Nov 1981 08:52:00 GMT Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Content-Length: 216 Connection: close Content-Type: text/html
^ - indholdet leveres som text/html ... men tror ikke det har betydning ... det var bare et forslag om at prøve at outputte en anden header ... (selvom du ikke p.t. outputter en header - så gør serveren det automatisk ... den er dog forkert her - så om ikke andet bør du outputte en anden header med text/xml da det er mest korrekt)
(er også på vej ud af døren nu ... er først hjemme igen hen under aftenen...)
ASP (ikke sikker på den da jeg ikke kender asp): <% Response.ContentType = \"text/xml\"; %>
Synes godt om
Slettet bruger
29. maj 2006 - 14:27#12
Det skal desværre være en header, der kan udskrives som tekst (f.eks. <meta http-equiv="content-Type" content="text/html; charset=iso-8859-1">), da jeg bruger output buffering, der ikke kan lide php-headers.
... og det er ikke en header hvis det outputtes sådan ... så er det en meta oplysning om, hvad siden indeholder og hvilken encoding siden er formatteret i ... anyhow downloader det nu og leger herefter på lokal offline - server ...
Det hjalp med content type ændring :) - skal jeg uploade en demo kopi af din test til et test sted? ... skal lige over på den anden så poster jeg lige den php fil der virkede :)
- om der kan laves en meta definering der overruler header der er sendt fra serveren tvivler jeg lidt på ... men jeg leger lidt mere med det ... evt. kan du gøre så du requeste en statisk bike0-4.xml fil og indstiller apache så den sætter den rigtige content-type hvis den ikke gør det automatisk når fil navnet er .xml
Så du skal have serveren til at outputte en header med <?php header("Content-type: application/xml"); ?> eller <?php header("Content-type: text/xml"); ?> eller køre det som i 29/05-2006 17:02:52 - med .xml filer istedet med en evt. efterfølgende konfigurering af serveren
- det er den konklusion jeg er nået til ... men lad os se om Olebole kan trylle ... :)
Man sætter _altid_ en header i PHP, når dokumentet skal tolkes som XML. At FF tolker et 'text/html'-dokument som XML er en klar bug: <?php header("Content-Type: text/xml")?> - evt. mere fuldstændig: <?php header("Content-Type: text/xml; charset=ISO-8859-1")?>
- og nej ... man kan ikke overskrive den af serveren satte MIME-type med en meta. Der er ingen vej uden om en HTTP-header i PHP :)
Synes godt om
Slettet bruger
29. maj 2006 - 18:43#24
Mit problem er, at hvis jeg sætter en header med php før xml'et, bliver det åbenbart tolket som om, at hele hjemmesiden - inklusive "hovedsiden" er xml.
Synes godt om
Slettet bruger
29. maj 2006 - 18:44#25
Det handlede bare om, at jeg placerede den rigtigt. Det her har taget mig 5 timer at finde ud af, og så lå svaret lige foran mig :) Smid svar endnu engang tak, begge to.
Og det er også et eksempel på at FF xhtml/xml DOM er buggy ... - Som Olebole plejer at fremhæve... så om scripts man laver til xhtml sider idag virker i IE når IE engang understøtter xhtml det er meget svært at være sikker på (hvis IE laver en ordentlig xhtml dom parser der ikke er buggy som FF's)
Tusind tak. For en anden gangs skyld, behøver du ikke skrue pointantallet op for min skyld. 1 eller 100 points betyder ikke noget. Derimod er der 'obligatorisk bitcheri', når folk bare klapper et spm. i uden en lyd ... men det er jo noget _helt_ andet ;o)
Selv tak. Jeg mener bestemt at alle deltagere, der har medvirket til at finde en løsning, skal have det antal points, der er udlovet, selvom dette med stor sandsynlighed ikke er meningen fra ekspertens side. :)
Hehe ... godt, så ... det er suverænt dit valg. Bare du ikke føler dig forpligtet, så er jeg mere end tilfreds ;o)
Synes godt om
Ny brugerNybegynder
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.