Jquery Ajax刷新在IE中不起作用

时间:2010-04-28 09:51:26

标签: jquery ajax

我有一个<ul>每10秒刷新一次,检查是否有新的推文(从推文中提取)。这适用于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 个答案:

答案 0 :(得分:4)

我设法修复它,结果证明它是IE的缓存问题。因此,为了解决这个问题,我在调用PHP文件的末尾放了一个包含unix时间的唯一查询。例如:

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

完美!

答案 1 :(得分:1)

.load()的documentation说明了有关加载页面片段的信息:

  

请注意,检索到的文档不能是完整的HTML文档;也就是说,它不能包含(例如)<html><title><head>元素。 jQuery在元素上使用浏览器的innerHTML属性来解析文档,大多数浏览器都不允许以这种方式解析非body元素。

这可能是这里的问题 - 因为您正在加载location.href,我假设您正在获取完整的HTML文档。创建一个只检索HTML相关部分的PHP页面应该解决这个问题。

答案 2 :(得分:1)

我知道这个问题已经回答了,但如果有人今天或之后阅读了这个问题,我认为问题在于缓存,IE会在缓存页面的响应中因此不会再次询问它。

在服务器端添加以下行以防止它。

header('Cache-Control: no-cache');