Gå til innhold

jQuery: Hente XML via XML-over-HTTP


Anbefalte innlegg

Hei!

 

Er helt amatør på dette med javascript, men har tatt i bruk jQuery for å kunne hente ut og behandle litt XML. Problemet mitt er at jeg må hente XML-en fra en URL som ikke ender på .xml (det kalles visstnok xml-over-http).

 

XML-en skal hentes herfra:

http://www.jernia.no/xml1/getProducts/?assoc=7EF11A7C-D69C-4CD4-A3BE-32D74E0E42F7&accountid=7125576&accountguid=F69DB22D-2B1F-460C-99E6-45512AD7C70D&altss=

 

Jeg bruker denne funksjonen til å hente XML-en:

$.ajax({
                type: "GET",
                url: "http://www.jernia.no/xml1/getProducts/?assoc=7EF11A7C-D69C-4CD4-A3BE-32D74E0E42F7&accountid=7125576&accountguid=F69DB22D-2B1F-460C-99E6-45512AD7C70D&altss=",
                dataType: "xml",
                success: function(xml) { }

 

Jeg ser Firebug-konsollen at den ikke klarer å hente XML. Dersom jeg laster ned/opp XML-en manuelt på server, og deretter peker url dit så fungerer det knirkefritt.

 

Noen som vet hvordan jeg går frem for å fikse dette?

Lenke til kommentar
Videoannonse
Annonse

At URL-en ikke ender på .xml skal ikke ha noe med saken å gjøre. Den vil uansett sendes over HTTP (som er den måten det meste av data sendes mellom webservere). Tror det er en blindvei å henge seg opp i det :)

 

Hva står det i Firebug-konsollen?

 

Jeg er ikke sikker, men mistenker at problemet ditt kan ligge i at du spør etter en fil på en annen server (et annet domenenavn). Med mindre du faktisk utvikler på jernia.no. (Se litt på "cross domain ajax" for jquery)

Lenke til kommentar

Hei!

 

Jeg har dessverre ikke muligheten til å utvikle direkte på jernia.no, så må operere på mitt eget domene :).

 

Her er det som vises i konsollen for henholdsvis en lokal forespørsel etter getProducts.xml og en forespørsel etter den URL-en jeg viser til ovenfor:

post-42579-0-50453700-1314126000_thumb.png

 

Jeg ser også at det som dukker opp under "Headers" er ganske forskjellig fra det som vises på den lokale forespørselen:

post-42579-0-53726700-1314126006_thumb.png

 

En kompis nevnte det kunne være noe galt med headerne i selve XML-en. Men er det ikke noen mulighet for at jeg kan fortelle jQuery/Ajax hva slags headere den skal bruke?

Lenke til kommentar

Hei igjen,

 

Det virker i utgangspunktet som en merkelig feil. Det ser ut som du ikke får noen HTTP-headere i retur, og heller ingen eksplisitt feilmelding/feilkode. Kort sagt, du burde ha fått en kode 404 (not found) eller 500 (internal server error) eller liknende. Når du ikke får noen feilkode, blir det vanskelig å vite hva som er galt.

 

Likevel, hvis jeg skal prøve meg på et skudd i mørket, jeg så på fila du prøver å laste inn, og ser at den er på godt og vel 1.5 MB med XML. I AJAX-sammenheng er det ekstremt mye, så du skal ikke se bort ifra du kan ha passert en eller annen grense. AJAX brukes vanligvis for å overføre små datamengder. Ville ha testet med en mindre fil for å se om det er her feilen ligger.

 

Uansett ville jeg ha sett på andre måter å løse "hovedproblemet" på enn å laste inn fila asynkront. Det spørs litt på hvilken funksjon siden din skal ha, men i utgangspunktet hadde det nok vært bedre å løse dette problemet på serversiden (dvs mellomlagre Jernia sin XML-fil på serveren og behandle dataene der, i stedet for å sende hele XML-fila rett til brukeren (nettleseren).). Hvis dette er en ekstern side (for publikum), så er nok dette omtrent eneste gode løsning.

Endret av mikk-
Lenke til kommentar

Ja, jeg tenker også at løsningen blir å mellomlagre filen et eller annet sted. Jeg fant en plugin til jQuery som heter "Uploadify" som lar brukeren laste opp XML-en selv. Scriptet skal kun brukes veldig internt til å telle opp / sjekke status på en del produkter fra XML-feeden, så det er ikke så nøye om det er litt ekstra jobb en gang i blant.

 

Takk for hjelpen mikk-! :)

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...