我有一个<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>';
}
知道出了什么问题吗? 感谢
答案 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');