[AJAX] Werkt wel in FF, niet in IE7

Pagina: 1
Acties:

  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
Ik maak gebruik van de onderstaande javascript code om een pagina elke 3 seconde te refreshen.
Dit werkt prima in Firefox, maar bij IE7 wordt wel eenmalig de inhoud geladen en wordt dan nooit meer refreshed. IE6 heb ik nooit kunnen testen...

Ter info: in includes/stats.php is een tabel met statistieken. Wanneer ik de volledige URL naar stats.php gebruik krijg ik hetzelfde resultaat in IE7.

Ook wanneer ik ctrl+f5 in IE7 doe dan wordt de inhoud weer uit de cache gehaald i.p.v. opnieuw geladen.

Hoe krijg ik de onderstaan de code ook werkende voor IE7?

JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
function getPage() {
    var xmlHttp;
    try {
        // Firefox, Opera 8.0+, Safari
        xmlHttp = new XMLHttpRequest();
    } catch (e) {
        // Internet Explorer
        try {
            xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {
                alert("Your browser does not support AJAX!");
                return false;
            }
        }
    }
    xmlHttp.onreadystatechange = function() {
        if(xmlHttp.readyState == 4) {
            result = xmlHttp.responseText;
            document.getElementById("stats").innerHTML = result;
        }
    }
    xmlHttp.open("GET","includes/stats.php",true);
    xmlHttp.send(null);
}

function reGetStats() {
    getPage();
    setTimeout("reGetStats();",3000);
}

[ Voor 4% gewijzigd door DeepFreeze.NL op 18-04-2007 14:47 ]


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:28

crisp

Devver

Pixelated

Zorgen dat je result niet gecached wordt door de browser...

Intentionally left blank


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
crisp schreef op woensdag 18 april 2007 @ 14:47:
Zorgen dat je result niet gecached wordt door de browser...
Dankje, was dus makkelijker dan ik dacht |:(

Voor de liefhebber, dit is mijn oplossing:
JavaScript:
1
2
3
url = "includes/stats.php?"+Math.random(); //Math.random zorgt ervoor dat het goed werkt in IE7
xmlHttp.open("GET",url,true);
xmlHttp.send(null);

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:28

crisp

Devver

Pixelated

Mwa, netter is als je stats.php gewoon no-chacheing headers laat sturen...

Intentionally left blank


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
crisp schreef op woensdag 18 april 2007 @ 15:04:
Mwa, netter is als je stats.php gewoon no-chacheing headers laat sturen...
Hoe krijg ik dat dan voor elkaar, want als ik dit in stats.php zet dan wordt de inhoud nog steeds gecached.

PHP:
1
header("Pragma: no-cache");

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 07:20

BCC

Uit de PHP Man:
PHP:
1
2
3
4
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>


En als dat niet werkt (ook uit de man:)

header('Pragma: private');
header('Cache-control: private, must-revalidate');

[ Voor 30% gewijzigd door BCC op 18-04-2007 15:33 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


  • DeepFreeze.NL
  • Registratie: April 2006
  • Laatst online: 02-03 08:01
BCC schreef op woensdag 18 april 2007 @ 15:30:
Pragma is een meta tag.
Uit de PHP Man:
PHP:
1
2
3
4
<?php
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past
?>
Dankje! _/-\o_
Pagina: 1