我创建了一个带有div的php文件,每10秒刷新一次。在此div中,将加载查询的结果。演示:http://mauricederegt.nl/test/test.php
看起来它正在刷新div,但如果在数据库中添加了新数据,则div不会获取新数据并继续显示旧数据。
我使用与需要重新加载的页面相同的页面:
$('#scoreboard-overview').fadeOut('slow').load('index.php #scoreboard-overview').fadeIn("slow");
如果我将div中使用的sql查询复制到外部php文件(例如reload.php),然后将其称为:
$('#scoreboard-overview').fadeOut('slow').load('reload.php').fadeIn("slow");
它有效,div显示最新数据。问题是:我不想使用另一个外部php文件。
我该如何做到这一点?
我还尝试将$resulttt
查询放在div中,但这也没有效果。我错过了什么?
亲切的问候,
index.php中使用的代码:
<?php
/////////////////////////////////////////////
//mysql_connect(servername,username,password);
//Here we connect to the database
/////////////////////////////////////////////
//Get the data
$resulttt = mysql_query("SELECT fbID, highscore, stars, MIN(time) AS time FROM highscore GROUP BY fbID, highscore ORDER BY highscore DESC, time ASC LIMIT 7");
?>
<!DOCTYPE html>
<html xmlns:fb="http://www.facebook.com/2008/fbml">
<head>
<meta charset="utf-8">
<title>Test</title>
<link rel="stylesheet" href="test.css" />
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.2.min.js"></script>
<script>
var auto_refresh = setInterval(
function()
{
$('#scoreboard-overview').fadeOut('slow').load('index.php #scoreboard-overview').fadeIn("slow");
}, 10000);
</script>
</head>
<body>
<div id="scoreboard">
<div id="scoreboard-title">High scores</div>
<div id="scoreboard-overview">
<?php echo '<ul>';
$num_rows = mysql_num_rows($resulttt);
$i = 0;
while($row = mysql_fetch_array($resulttt)) {
$i = $i + 1;
$fb_data = json_decode(file_get_contents('http://graph.facebook.com/'. $row['fbID']));
$fb_locale_str = $fb_data->locale;
$fb_name_str = $fb_data->first_name;
$fb_country_str = strtolower(substr($fb_locale_str, -2));
$flag_uri = 'images/flags/unknown.gif'; //display a general flag if unknown.
$row['fbnr'] = $row['fbID'];
echo '<li id="'. $row['fbnr'] .'">
<div class="userpicture"><img src="https://graph.facebook.com/'. $row['fbID'] .'/picture" alt="" /></div>
<div class="username"><p>'.$i.'. '.$fb_name_str.'</p></div>
<div class="userflag"><img src="'.$flag_uri.'" alt="" /></div>
<div class="userholder">
<div class="usertime"><p><img src="images/time.png" alt="" /><br>'. $row['time'] .'</p></div>
<div class="userstars"><img src="images/'. $row['stars'] .'s.png" alt="" /></div>
<div class="userscore"><p>'. $row['highscore'] .'</p></div>
</div>
</li>';
}
echo '</ul>'; ?>
</div>
<div id="scoreboard-bottom">end</div>
</div>
</body>
</html>
我认为我找到了使用GET
的解决方法,感谢所有人的帮助
答案 0 :(得分:2)
我无法想象任何浏览器都会对Javascript尝试将整个HTML页面(包含<html>
,<head>
和<body>
标记)插入到元素中感到高兴现有文件。您希望将已加载页面上的scoreboard-overview
内容放入现有页面上的scoreboard-overview
,因此请在调用.load()
时添加一个选择器:
$('#scoreboard-overview').fadeOut('slow').load('index.php #scoreboard-overview').fadeIn("slow");