Forum Clubic

Problème de cache ie7: ajax, xmlhttprequest

Bonjour, voila je veux tester si un fichier sur le disque dur exist. Je fait donc ceci:


function fichierExiste(url){
    var httpRequest = false;
    if (window.XMLHttpRequest) { // Mozilla, [Safari](http://www.clubic.com/telecharger-fiche38283-safari.html),...
        httpRequest = new XMLHttpRequest();
    }else if (window.ActiveXObject) { // IE
        try {
                httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        }catch (e) {
                try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            }catch (e) {}
        }
    }
    if (!httpRequest) {
        alert('Abandon :( Impossible de créer une instance XMLHTTP');
        return false;
    }
        httpRequest.open("GET", url, false);
        httpRequest.setRequestHeader("Cache-Control","no-cache");
        httpRequest.send(null);
        if(httpRequest.status == 200) { //Le fichier existe
                 return true;
       }else{
                 return false;
      }
}

Donc sur Firefox et IE6*, ca fonctionne mais malheureusement sous IE7, ca bug car il utilise le cache malgré le setRequestHeader. Donc il suffit que IE7 detecte une fois le fichier pour le detecter pour toujours, et meme le refresh, F5 et meme redemarrer le navigateur n’y fait rien…

Donc si qq’un a une idée, je suis preneur…

Merci
Edité le 18/01/2008 à 07:39

En général, ça se fait côté serveur ça.

Là, tu change la Request = requête du client.

(je sais, j’ai eu les mêmes merdes, sous IE6)

Bon, on dit que la nuit porte conseil, ce fut le cas, j’ai trouvé !

Je ne savais pas mais il suffisait de changer de méthode d’envoi. Contrairement à GET qui utilise le cache, POST ne l’utilise pas. Donc il a suffit que je remplace la ligne httpRequest.open(“GET”, url, false); par httpRequest.open(“POST”, url, false); et la problème a été résolu…

Voila, peu etre que ca servira a d’autre
Edité le 18/01/2008 à 07:40