JSON zakódovaný náhodně vygenerované číslo je vždy stejný na IE8

hlasů
0

Mám php funkce, která vrací náhodné JSON zakódovaný barvu

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

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

?>

Na stránce mám funkce jQuery, že vždy, když dojde k nějaké události, požádá o barvu a podle toho mění pozadí okna

$('.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 funguje dobře v FF3 a chromu, ale v IE8 i vždy obdrží stejnou barvu. nějaký nápad proč?

Položena 27/08/2009 v 04:39
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
3

IE je pravděpodobně stále mezipaměti verzi stránky. Vyberte si svůj oblíbený způsob, tedy požádat o nový dokument, a jít s ním :)

Odpovězeno 27/08/2009 v 04:43
zdroj uživatelem

hlasů
1

Jako @inerte řečeno, je to pravděpodobně IE, který ukládá výsledek.

Možná budete chtít použít $ .ajax a nastavte možnost mezipaměti na hodnotu false, protože to je falešný pouze pro datový typ scripta 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
})

Nebo můžete nastavit tuto možnost pomocí $ .ajaxSetup před použitím $ .getJSON:

$.ajaxSetup({ cache: false });
Odpovězeno 27/08/2009 v 04:53
zdroj uživatelem

hlasů
0

Stránka je pravděpodobně stále uložené v IE, který má více agresivní cache politiku než ostatní prohlížeče. Místo toho, aby žádající color.php, zkuste toto:

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

Jedná se o metodu, která využívá jQuery zabránit ukládání do mezipaměti. Jste jen přidáním jedinečný parametr URL zfalšovat prohlížeče do myšlení je to úplně nový požadavek.

Odpovězeno 27/08/2009 v 04:52
zdroj uživatelem

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