25. august 2007 - 16:26Der er
20 kommentarer og 1 løsning
XMLDOM og XMLHttpRequest
Jeg forsøger at henten en værdi fra en xml fil via javascript. Det går ganske fint i Internet Explorer men i Firefox hænger browseren hver gang den skal køre koden og jeg får følgende besked:
"Et script på denne side er muligvis optaget, eller svarer ikke længere. Du kan standse scriptet nu, eller lade det fortsætte, for at se om scriptet afslutter."
Vælger jeg "Fortsæt scriptet" så afslutter scriptet med det samme og jeg får defineret min "FilUrl".
Hvis jeg erstatter følgende linie: while (xmlhttp.readyState != 4) {} Med: alert("Test"); Så kørere mit script også fint og så snart man har lukket alerten køres scriptet færdigt og browseren hænger derfor ikke.
Jeg håber derfor der er nogen der kan hjælpe med at få scriptet til at køre perfekt i firefox. Jeg skal som sagt have en løsning der virker lige så godt som i IE hvor jeg kan hente enten teksten i xml filen eller blot et tag i dokumentet. Det er også helt fint med en anden løsning end den jeg har lavet men den skal virke 100% i Firefox.
På forhånd tak.
[Code] if (window.ActiveXObject) { var xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.load(url+'&IE=true'); while (xmlDoc.readyState != 4) {} var FilUrl = xmlDoc.getElementsByTagName("Url").item(0).text; } else { var xmlhttp=new XMLHttpRequest() xmlhttp.open("GET",url,true); xmlhttp.send(null); while (xmlhttp.readyState != 4) {} FilUrl = xmlhttp.responseText; } [/Code]
Undskyld, glem den kommentar - men hvad er det egentlig, du vil lave? Hvorfor bruger du XMLDOM i IE og XMLHttpRequest i andre? Det er to helt forskellige objekter, der kan helt forskellige ting =)
Det jeg ønsker er, at kunne hente en url (dvs. bare noget tekst) fra en ekstern xml fil via javascript og bruge det i min kode.
Jeg bruger 2 forskellige komponenter, da jeg startede med at lave det med XMLDOM og så gik det op for mig at det ikke virkede i FF. Derfor lavede jeg en løsning til Firefox med XMLHttpRequest.
Og ved ikke om det var din første kommentar jeg skulle glemme, men ellers så ja, jeg tester XMLDOM i IE 7.0 og XMLHttpRequest i FF 2.0.
Okay, så kan du - forudsat, xml-dokumentet ligger under samme domæne - skrive:
function getHttpObj(sUrl) { var xmlhttp = o = s = a = null; if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); else if (window.ActiveXObject) { a = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"]; for (var i=0,j=a.length; i<j; s=a[i],i++) { try{ if (o = new ActiveXObject(s)) break } catch(e){} } } xmlhttp.open("GET", sUrl, true); xmlhttp.onreadystatechange = function() { responseCallBack(xmlhttp); }; xmlhttp.send(null); } function responseCallBack(xmlhttp) { if (xmlhttp.readyState != 4) return; FilUrl = xmlhttp.responseText; xmlhttp = null; }
function getHttpObj(sUrl) { var xmlhttp = a = null; if (window.XMLHttpRequest) xmlhttp = new XMLHttpRequest(); else if (window.ActiveXObject) { a = ["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","Msxml2.XMLHTTP","Microsoft.XMLHTTP"]; for (var i=0,j=a.length; i<j; s=a[i],i++) { try{ if (xmlhttp = new ActiveXObject(s)) break } catch(e){} } } xmlhttp.open("GET", sUrl, true); xmlhttp.onreadystatechange = function() { responseCallBack(xmlhttp); }; xmlhttp.send(null); }
Fandt mit problem. responseCallBack() nåede ikke at blive kørt inden min næste kode. Så jeg flyttede bare denne kode op under funktionen og nu virker det som det skal!
Mange tak for hjælpen. Smid et svar og du skal få point!
til det her: "Et script på denne side er muligvis optaget, eller svarer ikke længere. Du kan standse scriptet nu, eller lade det fortsætte, for at se om scriptet afslutter."
Jeg synes,det er mere interessant at høre, hvad du ryger - eller drikker - hvis du ikke kan forstå, at jeg gerne vil have et råd til, om jeg skal give maskinen ordre på at standse scriptet nu - eller at lade det fortsætte - når jeg får denne besked op på skærmen:
"Et script på denne side er muligvis optaget, eller svarer ikke længere. Du kan standse scriptet nu, eller lade det fortsætte, for at se om scriptet afslutter."
Jeg ryger Camel uden filter og drikker kaffe, og det gør mig desværre ikke spor clairvoyant. At gætte, hvad du tænker, når du ikke gider bruge ord, der derfor ganske vanskeligt =)
Når først du får sådan en besked, er der sjældent andet at gøre, end at lukke browseren - evt. via taskmanager'en. Løsningen er at finde ud af, hvad der er skyld i beskeden og fremover forsøge at undgå, at den situation opstår.
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.