Avatar billede gbjensen65 Nybegynder
30. oktober 2010 - 00:20 Der er 3 kommentarer og
2 løsninger

IE 7 + 8 catcher mine AJAX opdaterede sider.

Jeg kan med et ajax kald opdatere indholdet af en <div> f.eks. skifte side og dermed hente ny data fra min database.
problemet er bare at IE godt nok skifter side, men viser det "gamle" indhold fra siden.
Hvis jeg har opdateret en rubrik og reloader siden med mit ajax kald, så opdateres siden ikke i IE. Det virker uden problemer i Firefox og Chrome.

Her er mit simple ajax kald:

function updateBeers(ret){
    var ajaxRequest;  // The variable that makes Ajax possible!
   
    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4 && ajaxRequest.status==200){
           
            document.getElementById('beerlist').innerHTML=ajaxRequest.responseText;
        }
    }

    var queryString = ret;
   
    document.getElementById('returnlink').innerHTML=queryString;
    ajaxRequest.open("GET", "/ajax/updatebeers2.php" + queryString, true);
    ajaxRequest.send(null);
}

Hvordan tvinger jeg IE til at vise det den modtager i responseText ?
Avatar billede kgkg Nybegynder
30. oktober 2010 - 00:34 #1
Har du nogen form for ‘Cache: no-cache' i din response header?
Avatar billede kgkg Nybegynder
30. oktober 2010 - 00:38 #2
Her er et link til lidt inspiration, hvor der er en der har fået IE til ikke at cache.

http://greenash.net.au/thoughts/2006/03/an-ie-ajax-gotcha-page-caching/
Avatar billede intenz Novice
30. oktober 2010 - 00:42 #3
GET cacher i IE, POST gør ikke. Så du kan ændre den til POST hvis du vil undgå det.

Ellers kan du bruge den typiske workaround til GET. Du skal bare sætte et tilfældig nummer i din request. Den fungerer også fint.

ajaxRequest.open("GET", "/ajax/updatebeers2.php" + queryString + "&rand=" + Math.random(), true)
Avatar billede gbjensen65 Nybegynder
30. oktober 2010 - 19:25 #4
Hej kgkg og intenz,

Jeg har afprøvet jeres forslag og de hjælper begge to.

Kan du derfor ikke kaste et svar ud kgkg ? så jeg kan fordele nogle points til jer ?

Personligt synes jeg mig best om header metoden da den ikke "snyder" browseren til at tro at det er en anden side der hentes.

POST metoden har jeg ikke afprøvet, men gør det måske en dag.

Tak for hjælpen!
Avatar billede kgkg Nybegynder
30. oktober 2010 - 21:36 #5
Hermed et svar.
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