0

我创建了一个带有 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,感谢大家的帮助

4

1 回答 1

2

我无法想象任何浏览器都会对 Javascript 尝试将整个 HTML 页面(带有<html>,<head><body>标签)插入现有文档中的元素感到高兴。您想将scoreboard-overview加载页面scoreboard-overview上的内容放入现有页面,因此在您的调用中添加一个选择器.load()

$('#scoreboard-overview').fadeOut('slow').load('index.php #scoreboard-overview').fadeIn("slow");
于 2012-06-07T15:19:42.343 回答