JSON nombre aléatoire généré codé est toujours le même sur IE8

voix
0

i ayant une fonction de php qui retourne une couleur codé aléatoire json

<?php
    function randNum() {
        return rand(0, 255);
    }

    $color = array ('r'=>randNum(),'g'=>randNum(),'b'=>randNum());
    echo json_encode($color);

?>

sur la page que j'ai une fonction jquery que chaque fois qu'un événement se produit, demande une couleur et modifie le fond de la fenêtre en conséquence

$('.wnd').mouseenter(function() {
    $.getJSON(color.php, function(color){
        var rgbString = 'rgb(' + color.r + ', ' + color.g + ', '+ color.b + ')';
        var hexString = rgb2hex(rgbString);
        $('.wnd').css('background-color', hexString);
    });
});

whis fonctionne bien dans FF3 et chrome, mais dans IE8 que je reçois toujours la même couleur. toute idée pourquoi?

Créé 27/08/2009 à 04:39
source utilisateur
Dans d'autres langues...                            


3 réponses

voix
3

IE devient probablement une version en cache de la page. Choisissez votre méthode préférée de demander un nouveau document et aller avec elle :)

Créé 27/08/2009 à 04:43
source utilisateur

voix
0

Votre page est probablement dans IE se cache, qui a une politique de mise en cache plus agressive que les autres navigateurs. Au lieu de demander color.php, essayez ceci:

$.getJSON("color.php?_" + new Date().getTime().toString(), function(color)...

Ceci est la méthode qui utilise jQuery pour empêcher la mise en cache. Vous êtes juste l'ajout d'un paramètre unique à l'URL de simuler le navigateur en pensant qu'il est tout à fait une nouvelle demande.

Créé 27/08/2009 à 04:52
source utilisateur

voix
1

Comme @inerte dit, il est probablement IE qui met en cache le résultat.

Vous pouvez utiliser .ajax $ et réglez l'option de cache false, car il est faux que pour dataType scriptet jsonp:

$.ajax({
  type: "GET",
  url: "color.php",
  success: function (color) {
    var rgbString = 'rgb(' + color.r + ', ' + color.g + ', '+ color.b + ')',
        hexString = rgb2hex(rgbString);

    $('.wnd').css('background-color', hexString);
  },
  dataType: 'json',
  cache: false
})

Ou vous pouvez définir cette option à l' aide .ajaxSetup $ avant d' utiliser .getJSON $:

$.ajaxSetup({ cache: false });
Créé 27/08/2009 à 04:53
source utilisateur

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more