Обновление Jquery Ajax не работает в IE - PullRequest
4 голосов
/ 28 апреля 2010

У меня есть <ul>, который обновляется каждые десять секунд, чтобы проверить, были ли какие-либо новые твиты (это извлечение из твиттера). Это отлично работает в Firefox, Chrome и т. Д., Но не работает ни в одной версии, если Internet Explorer.

Мой код выглядит следующим образом:

setInterval(function() {
    $("#banter .scroll-pane").load(location.href+" #banter .scroll-pane>*","");
}, 10000);

Моя PHP-функция для создания списка выглядит следующим образом:

function showTweets($section, $limit, $class) {
    $result = mysql_query("SELECT * FROM hash WHERE section = '".$section."' ORDER BY date DESC LIMIT ".$limit);

    echo '<ul class="scroll-pane '.$class.'">';
        while($row = mysql_fetch_array($result)) {
            echo '<li>';
                echo '<p>'.html_entity_decode($row['tweet']).'</p>';
                echo '<a href="'.$row['user_url'].'">'.$row['user'].'</a>';
            echo '</li>';
        }
    echo '</ul>';
}

Есть идеи, что не так? Спасибо

Ответы [ 3 ]

4 голосов
/ 28 апреля 2010

Мне удалось это исправить, оказалось, что это проблема с кэшированием в IE. Чтобы исправить это, я поставил уникальный запрос, содержащий время Unix, в конце вызова файла PHP. Например:

setInterval(function() {
    $("#banter .scroll-pane").load('test.php'+"?ms=" + new Date().getTime());
}, 6000);

Отлично! * * 1004

1 голос
/ 19 апреля 2012

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

Добавьте следующую строку на стороне сервера, чтобы предотвратить это.

header('Cache-Control: no-cache');
1 голос
/ 28 апреля 2010

В документации .load () говорится о загрузке фрагментов страницы:

Обратите внимание, что полученный документ не может быть полным документом HTML; то есть он не может включать (например) <html>, <title> или <head> элементов. jQuery использует свойство innerHTML браузера для элемента для синтаксического анализа документа, и большинство браузеров не разрешают таким образом анализировать элементы, не связанные с телом.

Возможно, это проблема здесь - поскольку вы загружаете location.href, я предполагаю, что вы получаете полный HTML-документ. Создание страницы PHP, которая извлекает только релевантную часть HTML, должно исправить это.

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