Avatar billede lsolesen Nybegynder
13. marts 2005 - 13:17 Der er 2 kommentarer og
1 løsning

xmlhttprequest fejler i IE

Jeg bruger følgende kode fra http://jibbering.com/2002/4/httprequest.html til at forbinde til et xmlhttp objekt.

var xmlhttp=false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
// JScript gives us Conditional compilation, we can cope with old IE versions.
// and security blocked creation of the objects.
try {
  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
  xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (E) {
  xmlhttp = false;
  }
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
  xmlhttp = new XMLHttpRequest();
}

Så bruger jeg følgende udsnit af mit javascript i en applikation:

url = "/modules/accounting/find_account_js.php?s="+account.value;
if (!xmlhttp.open) return;
  xmlhttp.open("GET",url,true);
  xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState==4) {
    var sp = document.createElement('span');
    sp.style.fontSize = "0.8em;";
    var text = document.createTextNode(xmlhttp.responseText);
    sp.appendChild(text);
    elem.appendChild(sp);
  }
}

Scriptet fejler imidlertid ved xmlhttp.open i IE 6.0, hvor den siger at metoden ikke er understøttet. Jeg troede at jeg med if (!xmlhttp.open) return; kunne sørge for at den tjekkede om metoden findes, men det gøre den åbenbart ikke. Er der nogen, der har en vej uden om det?
Avatar billede olebole Juniormester
13. marts 2005 - 14:45 #1
<ole>

Hele instantieringen af ActiveX-objektet er jo udkommenteret, så det aldrig bliver instantieret  :)
Prøv dette i stedet:

var xmlhttp=null;
try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
    try {
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
        xmlhttp = null;
    }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
}

- og dette:

url = "/modules/accounting/find_account_js.php?s="+account.value;
if (xmlhttp) return;
xmlhttp.open("GET",url,true);
xmlhttp.onreadystatechange = function() {
    if (xmlhttp.readyState==4) {
        var sp = document.createElement('span');
        sp.style.fontSize = "0.8em";
        var text = document.createTextNode(xmlhttp.responseText);
        sp.appendChild(text);
        elem.appendChild(sp);
    }
}
xmlhttp.send();

/mvh
</bole>
Avatar billede lsolesen Nybegynder
13. marts 2005 - 15:13 #2
Jeg glemte at fortælle, at det virker aldeles glimrende i Mozilla. Udkommenteringen gik jeg ud fra var for at beskytte de ældre browsere - og jeg har da også bibeholdt udkommenteringen uden problemer. Til gengæld så kom det til at virke, da jeg udskiftede den nederste kodeblok med din med den enkelte ændring if (!xmlhttp) return; - så jeg siger mange tak for hjælpen. Send lige et svar!
Avatar billede olebole Juniormester
13. marts 2005 - 21:37 #3
svar sendt  :)
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
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

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