Обновление динамических изображений с помощью jQuery

Я пытаюсь создать список потоков twitch.tv, который каждые 60 секунд выводит статус онлайн / офлайн и возвращает изображение на основе этого ответа. PHP-код, который я использую, чтобы получить эту информацию и вернуть изображение ниже:

<?php
    header('content-type: image/png');

    $stream = $_GET['stream'];

    $json_file = @file_get_contents("http://api.justin.tv/api/stream/list.json?channel={$stream}");
    $json_array = json_decode($json_file, true);

    if (strtolower($json_array[0]['name']) == strtolower("live_user_{$stream}")) {
        echo file_get_contents("online.png");
    }else{
        echo file_get_contents("offline.png");
    }
?>

Эта часть отлично работает. Я называю этот код (image.php) примерно так:

<img src="image.php?stream=nameofstreamgoeshere" />

И все это работает, но это не жить. Я попробовал несколько вещей, чтобы он обновился, и остановился на jQuery, который, вероятно, является лучшим вариантом. Я думаю, что мне нужно сделать некоторую комбинацию отправки информации заголовка, которая заставляет браузеры не кэшировать изображение и, возможно, помещать его в div, который jQuery обновляет каждые 60 секунд, но именно здесь я столкнулся с кирпичными стенами. Любые предложения о том, как это сделать? Я относительно новичок в jQuery и немного нащупываю здесь, поэтому любая помощь будет высоко ценится.

Множество потенциальных решений, которые я нашел для избежания кэширования изображений, включают добавление таких вещей к URL-адресу изображения, как дата или время, но, поскольку это уже URL-адрес динамического изображения, я не уверен, как заставить это работать.

Заранее благодарю за любую помощь.

1 ответ

Хорошо, поэтому может быть странно ответить на мой собственный вопрос, однако я нашел частичное решение проблемы, которую я первоначально представил:

Я решил использовать jquery для автоматического обновления div, который содержит статус twitch:

Во-первых, называется jquery в заголовке моего документа:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js">

Затем в нижней части раздела тела файла:

<script>
$.ajaxSetup ({
    // Disable caching of AJAX responses */
    cache: false
});

var auto_refresh = setInterval(
function()
{
$('#twitchStatus').fadeOut(0).load('reload.php').fadeIn(0);
}, 60000);
</script>

И, наконец, вокруг кода с изображением в нем:

<div id="twitchStatus">
nameofstreamgoeshere is <img style="margin-bottom: 0px;" alt="" src="image.php?stream=nameofstreamgoeshere" />
</div>

Итак, моя текущая проблема? Он отлично работает в Chrome, но не в IE или Firefox... кто-нибудь есть какие-либо ведет? Я подумал, что это может быть кеширование страницы - потому что она, кажется, совсем не обновляется, следовательно, первая часть скрипта в конце тела, но это ничего не делает. Опять же, любая помощь будет высоко ценится.

Другие вопросы по тегам