json gecodeerde willekeurig gegenereerd nummer is altijd hetzelfde op ie8

stemmen
0

Ik heb een php functie die een willekeurige JSON gecodeerd kleur terug

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

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

?>

op de pagina heb ik een jQuery functie dat wanneer een gebeurtenis plaatsvindt, vraagt ​​om een ​​kleur en verandert het raam achtergrond dienovereenkomstig

$('.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 werkt goed in FF3 en chroom, maar in IE8 ik dezelfde kleur krijgen altijd. enig idee waarom?

De vraag is gesteld op 27/08/2009 om 04:39
bron van user
In andere talen...                            


3 antwoorden

stemmen
3

IE is waarschijnlijk het krijgen van een gecachte versie van de pagina. Kies uw favoriete methode van het aanvragen van een nieuw document en met het te gaan :)

antwoordde op 27/08/2009 om 04:43
bron van user

stemmen
1

Zoals @inerte al zei, het is waarschijnlijk IE dat het resultaat caches.

Misschien wilt u gebruik maken van $ .ajax en de optie cache om valse, want het is alleen false voor dataType scripten 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
})

Of je kan die optie gebruik te stellen $ .ajaxSetup voordat u $ .getJSON:

$.ajaxSetup({ cache: false });
antwoordde op 27/08/2009 om 04:53
bron van user

stemmen
0

Uw pagina wordt waarschijnlijk steeds opgeslagen in IE, die een meer agressieve caching beleid dan andere browsers heeft. In plaats van het verzoek color.php, probeer dit:

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

Dit is de methode die jQuery gebruikt om caching te voorkomen. Je bent gewoon het toevoegen van een unieke parameter aan de URL om nep van de browser te laten denken dat het een totaal nieuwe aanvraag.

antwoordde op 27/08/2009 om 04:52
bron van user

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