Avatar billede virus Nybegynder
18. maj 2005 - 19:14 Der er 10 kommentarer og
1 løsning

Microsoft.XMLDOM + setInterval()

Jeg har siddet og leget med MSs XMLDOM som et active x objekt.

Jeg er dog stødt på et problem, lige så snart jeg forsøger at hente indholdet af XML dokumentet, lad os sige hvert minut, så er det som om alt javascript eksekvering i browseren er stoppet, min XML funktion fejler intet, ligeledes gør mit interval heller ikke.

XML funktionen eksekveres korrekt første gang, men derefter er det som om den ikke bliver eksekveret ved andet forsøg?

Har i nogen ideer til hvad de kan skyldes, kan det evt. være fordi jeg ikke får afsluttet mit objekt, eller er der andet i det?
Avatar billede olebole Juniormester
18. maj 2005 - 20:37 #1
<ole>

Da vi ikke ved, hvad du gør ... er det svært at få ideer til, hvad du skulle gøre i stedet  :)

/mvh
</bole>
Avatar billede virus Nybegynder
18. maj 2005 - 21:17 #2
I det store hele, det her..

var xml = new ActiveXObject("Microsoft.XMLDOM");

function getXML(file)
{
    xml.async = "false";
    xml.onreadystatechange = verifyXML;
    xml.load(file);
}

function verifyXML()
{
    if (xml.readyState != 4)
    {
        return false;
    }
}

function writeXML()
    getXML("xmldokumentpåandenserver.xml");
    alert(xml.documentElement);
}

setInterval("writeXML()", 50000);
Avatar billede smirnoff Nybegynder
18. maj 2005 - 21:44 #3
prøv lige for sjov skyld at instantier xml-objektet inden i getXML()
Avatar billede virus Nybegynder
18. maj 2005 - 21:46 #4
Har jeg tidligere forsøgt, samme problem :/
Avatar billede smirnoff Nybegynder
18. maj 2005 - 21:56 #5
mærk'ligt - det virker fint her ... hvilken browser og version af MSXML kører du?
Avatar billede smirnoff Nybegynder
18. maj 2005 - 21:58 #6
.. det eneste jeg har lavet er at sætte denne funktion til at køre på body onload

function init() {
  setInterval("writeXML()", 2000);
}

.. jeg gad ikke vente 50 seks ;)
Avatar billede olebole Juniormester
18. maj 2005 - 22:16 #7
Du laver helt sikkert nogen andre fejl - så du må vise os hele koden. I øvrigt kan du roligt barbere koden ned til:

var xml = new ActiveXObject("Microsoft.XMLDOM");

function getXML(file) {
    xml.async = "false";
    xml.load(file);
}
function writeXML()
    getXML("xmldokumentpåandenserver.xml");
    alert(xml.documentElement);
}

setInterval("writeXML()", 50000);

- da du jo ikke bruger resten til noget  :)
Avatar billede virus Nybegynder
19. maj 2005 - 06:38 #8
Jae, jeg ved squ ikke hvorfor, eller hvad der er sket, men nu funker det...
Det eneste der er lavet om er at i stedet for at traverse dokumentet, så alerter jeg det, som mit eksempel..

Smirnoff -> Jeg takker for ideerne!
Olebole -> Hvorfor benytter jeg ikke verifyXML()?

Jeg regner med det er ok i begge får points, så smid lige et svar begge 2 :o)
Avatar billede olebole Juniormester
19. maj 2005 - 07:37 #9
Noget kunne med andre ord tyde på, fejlen ligger i din traversering. Hvad angår verifyXML(), så giver det vel ikke så megen mening at checke på objektets readyState-property, når du sætter async til false. Så stoppes al scriptafvikling jo, til XML'en er loaded  :)
Avatar billede virus Nybegynder
19. maj 2005 - 09:04 #10
Det er jo selvfølgelig rigtigt.
Men for at komme til traversing af dokumentet så bliver alt indhold gennemgået, men jeg må jo lige kigge på det.

SVAR så! :o)
Avatar billede smirnoff Nybegynder
19. maj 2005 - 21:33 #11
ok - jeg smider et svar her så :)
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