случайное число с кодировкой json всегда одинаково на ie8 - PullRequest
0 голосов
/ 27 августа 2009

у меня есть функция php, которая возвращает случайный кодированный в json цвет

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

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

?>

на странице у меня есть функция jquery, которая всякий раз, когда происходит событие, запрашивает цвет и соответственно меняет фон окна

$('.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);
    });
});

Все хорошо работает в ff3 и chrome, но в ie8 я всегда получаю один и тот же цвет. есть идеи почему?

Ответы [ 3 ]

3 голосов
/ 27 августа 2009

IE, вероятно, получает кэшированную версию страницы. Выберите ваш любимый способ запроса нового документа и продолжайте с ним

1 голос
/ 27 августа 2009

Как сказал @ inerte , вероятно, IE кеширует результат.

Возможно, вы захотите использовать $. Ajax и установить для параметра кэширования значение false, поскольку оно равно false только для dataType script и 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
})

Или вы можете установить эту опцию, используя $. AjaxSetup перед использованием $ .getJSON:

$.ajaxSetup({ cache: false });
0 голосов
/ 27 августа 2009

Ваша страница, вероятно, кэшируется в IE, который имеет более агрессивную политику кэширования, чем другие браузеры. Вместо запроса color.php попробуйте это:

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

Это метод, который jQuery использует для предотвращения кэширования. Вы просто добавляете уникальный параметр в URL, чтобы заставить браузер думать, что это совершенно новый запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...