Avatar billede stefmeister Nybegynder
01. maj 2011 - 02:27 Der er 4 kommentarer og
1 løsning

GXmlHttp fejler

Hej eksperter,

Jeg sidder og roder lidt med en hjemmeside som indeholder et google map; jeg bruger en xml-fil til at indeholde de data jeg skal bruge for at definere mine markers på map'et samt en lille beskrivelse af punktet nede i en <div> under map'et.
Det virker også ganske fint - så længe der er nogle data i xml-filen.

Hvis der mangler data i xml-filen blot et enkelt sted; f.eks. at der står:
<k_land></k_land>
istedet for
<k_land>Danmark</k_land>

så kan den slet ikke finde ud af at beskrive det punkt - altså det er som om at mit javascript dør fuldstændig, blot fordi det er et enkelt sted den ikke kan finde noget child i xml-filen.

Koden jeg bruger til at skrive teksten til min div er som følger:

----------------------------------

  function Beskrivelse (IDforXML) {

     
      var request = GXmlHttp.create();
      request.open('GET', 'golfklubber.xml', true);
      request.onreadystatechange = function() {
        if (request.readyState == 4 && request.status == 200) {
        var xmlDoc = request.responseXML;
        var xmlrows = xmlDoc.documentElement.getElementsByTagName("Row");
       
        for (var i = 0; i < xmlrows.length; i++) {
            var xmlrow = xmlrows[IDforXML];
           
            //get the Klub Navn
            var KlubNavn = xmlrow.getElementsByTagName("k_navn")[0].firstChild.data;
           
            //get the Adresse
            var Adresse1 = xmlrow.getElementsByTagName("k_adresse")[0].firstChild.data;
       
            //get the Land
            var Land = xmlrow.getElementsByTagName("k_land")[0].firstChild.data;

            var feltet = document.getElementById("tekstfelt");
           
            var indhold = KlubNavn + '<br>' + Adresse1 + '<br>' + Land;
           
            feltet.innerHTML = indhold;
           
        }
       
       
        }
        }

----------------------------------

Hvor feltet er navnet på min <div> og IDforXML er id-nummeret på sportsklubben.

Hvis der er data i alle elementerne i xml-filen; så er der ingen problemer - men hvis der ikke står noget i blot et af felterne, så failer hele scriptet åbenbart.
Nogen der ved hvordan jeg kommer uden om dette?

På forhånd tak :-)

Mvh
Steffen.
Avatar billede jakobdo Ekspert
01. maj 2011 - 09:00 #1
Hvordan det lige gøres præcist, er jeg lidt usikker på.
Men det må jo være at tjekke om der er data i din "felter" inden du arbejder videre med dem.
Avatar billede stefmeister Nybegynder
01. maj 2011 - 09:54 #2
Jeg jeg tænker også på noget i samme dur - men er ikke super skarp i javascript, så er ikke sikker på hvordan man laver sådan en kontrol :/
Avatar billede stefmeister Nybegynder
01. maj 2011 - 10:13 #3
Nå det ser ud til at funktionen try.. catch virker.. men lader lige spørgsmålet stå åben hvis nu der skulle komme flere gode idéer :-)
Avatar billede tjens Nybegynder
01. maj 2011 - 12:13 #4
var KlubNavn = '';
var knNodes = xmlrow.getElementsByTagName("k_navn");
if (knNodes.length > 0) {
    if (knNodes[0].hasChildNodes() ) {
        KlubNavn = knNodes[0].firstChild.nodeValue;
    }
}


Med forbehold for stavefejl, da det ikke er testet.
Avatar billede stefmeister Nybegynder
16. maj 2011 - 09:13 #5
Endte med at gå med min egen løsning med try catch..
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

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