Avatar billede supersquirrel Nybegynder
04. marts 2009 - 22:59 Der er 9 kommentarer

Ajax i IE - opdaterer ikke

Hejsa!

Jeg har et ajax script, som opdaterer en gæstebog hvert 5. sekund. Det virker som det skal i FireFox, men i Internet Explorer 6, virker det ikke..

Jeg håber der er nogen, der kan hjælpe mig. Min kode ser ud som følger:

function getXmlHttpRequestObject() {
if (window.XMLHttpRequest) {
  return new XMLHttpRequest();
} else if(window.ActiveXObject) {
  return new ActiveXObject("Microsoft.XMLHTTP");
} else {
  return false;
}
}

function nyJoke(navn) {
    //document.getElementById("joke").innerHTML="Henter joke....";
    xmlHttp=getXmlHttpRequestObject();
    var url="member/msg.php";
    xmlHttp.onreadystatechange=stateChangedJoke;
    xmlHttp.open("GET",url,true);
    xmlHttp.send(null);
    setTimeout("nyJoke()",5000);
}

function stateChangedJoke() {
    if (xmlHttp.readyState==4) {
        if (xmlHttp.responseText.length > 0) {
            document.getElementById("joke").innerHTML=xmlHttp.responseText;
        }
       
    }
}
Avatar billede majbom Novice
05. marts 2009 - 07:49 #1
1. du bør bruge POST i stedet for GET
2. du bør bruge DOM i stedet for innerHTML, innerHTML har aldrig været en del af nogen standard.

og umiddelbart ser det ud til at du smider html ind i din div?
Avatar billede supersquirrel Nybegynder
05. marts 2009 - 10:41 #2
Hej,

Så det vil sige, at denne linje:
  xmlHttp.open("GET",url,true);
Skal laves om til denne:
  xmlHttp.open("POST",url,true);

Og denne:
  document.getElementById("joke").innerHTML=xmlHttp.responseText;
Til denne:
  document.getElementById("joke").DOM=xmlHttp.responseText;

Ja, jeg har et div på en anden side, som jeg smider det jeg henter fra msg.php ind i..
Avatar billede majbom Novice
05. marts 2009 - 11:00 #3
det første er korrekt ja, men ikke det sidste.

jeg har svært ved at forklare DOM, men det er måden man "bygger" elementer på med javascript.

så hvis det du sender via din ajax-funktion er html-kode, så dur det alligevel ikke med dom, da det ikke er sådan ajax er tiltænkt da det blev lavet. og det er derfor ikke hensigsmæssigt at sende html-formatteret data via ajax. det er beregnet til rå data, som så parses/bearbejdes på klienten med javascript.
Avatar billede supersquirrel Nybegynder
05. marts 2009 - 11:20 #4
I min msg.php fil, henter jeg beskeder fra en database, som så via javascriptet skal sendes til joke div'et.

Det hele er bare, så man slipper for selv at skulle opdatere.

Håber du kan hjælpe mig på vej til en løsning, der virker både i IE og FF
Avatar billede majbom Novice
05. marts 2009 - 11:37 #5
er det så ren tekst den sender fra din php-fil? eller er der html-koder og andet snavs med?
Avatar billede supersquirrel Nybegynder
05. marts 2009 - 12:44 #6
Den sender også html med
Avatar billede majbom Novice
05. marts 2009 - 13:02 #7
ja, det er så det der ikke er optimalt. så så længe du gør det sådan, kan du ikke bruge dom.
Avatar billede olebole Juniormester
05. marts 2009 - 15:51 #8
<ole>

I Ajax formaterer man ikke data i HTML, men i JSON eller XML - hvilket performer dramatisk meget bedre!

Da du på den anden side stadig ikke har forstået noget somhelst af tråden:
    http://www.eksperten.dk/spm/817625

- kan det være svært at se, hvad i alverden man dog skal gøre for at få dig til at forstå, hvad Ajax går ud på  =)

/mvh
</bole>
Avatar billede majbom Novice
04. november 2010 - 11:21 #9
kan vi lukke hér?
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