自动刷新无限div

时间:2012-12-31 17:31:52

标签: php javascript jquery html refresh

我目前能够使用jquery和php在我的网站上刷新div。这很有效。问题是当前刷新的数据是整个表。标题中使用的代码如下:

<!-- DIV REFRESH START -->
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script> 
<script> 
var auto_refresh = setInterval(
function()
{
$('#datatable').fadeOut('slow').load('data/table.php').fadeIn("slow");
}, 10000);
</script>
<!-- DIV REFRESH END -->

正如您所看到的,它正在刷新具有特定页面的特定div。我对jquery和基于java的编码一般都很新手,因为我相信这个问题会很明显。

是否可以执行以下操作:

  1. 该表实际上是在php函数中创建的,因为行数一直在变化。是否可以让它专门刷新功能,而不是只调用函数的页面?

  2. 目前表格完全刷新。这只是为了更新每一行上的一个数字。让它只刷新行上的每个数字会更清晰,但是由于表的灵活性以及它是函数的一部分,这是可能的吗?如果是这样,怎么可能呢?我知道我可以让每一行上的每个div都有一个唯一的div名称,然后我可以在页面顶部的脚本部分考虑这个名称,但是不需要重复添加相同代码的每个可能的div名称吗?

  3. 虽然我知道可以根据数据库中的某些内容发生更改而不是延迟时间来刷新项目但是根据上面列出的要求,最好的方法是什么?

  4. 我可能会离开,这是每个问题的简单答案,但我感谢任何和所有的输入。

    谢谢!

    P.S。如果它有帮助,我目前用来创建表的功能如下(我知道它可以使功能更清晰,但它是一个学习项目):

    function portalTable($venueId, $eventId)
    {   
        echo "<table class='basic-table'><tr class='th'><th>Portal Name</th><th>Scanned</th></tr>";
        $grandTotals = array();
        $portalSql = mysql_query("SELECT * FROM portal WHERE id_venue = $venueId");
        while ($portalRow = mysql_fetch_array($portalSql))
            {
                $portalId = $portalRow['id_portal'];
                $portalName = $portalRow['name_portal'];
                if($portalId&1) {$gray = "dg";} else {$gray = "lg";}                        
                $sql = mysql_query("SELECT * FROM scan WHERE id_event = $eventId AND id_portal = $portalId");
                while ($row = mysql_fetch_array($sql))
                    {
                        $scanTotal = $row['total_scan'];
                        echo "<tr class='$gray'><td>$portalName</td><td>$scanTotal</td></tr>";
                        $grandTotals[] = $scanTotal;
                    }
            }
        $totals = array_sum($grandTotals);
        echo "<tr class='basic-table-total'><td>Total</td><td>$totals</td></tr>";
    
        // total failed scans
        $sql = mysql_query("SELECT total_errors FROM errors WHERE id_event = $eventId");
        while ($row = mysql_fetch_array($sql))
            {
                $totalErrors = $row['total_errors'];
                echo "<tr class='basic-table-total'><th>Total Rejected Scans</th><th>$totalErrors</th></tr>";
            }
    
        echo "</table>";
    }
    

1 个答案:

答案 0 :(得分:2)

$('div.myDiv').each(function(i, obj) {
    $(obj).load('myURL.php');
});

那你在寻找什么?

发送的大量数据?不要发送原始HTML! 相反,在jQuery中使用parseJSON并在PHP脚本中使用json_encode向用户发送(更多)较少量的数据,然后客户端可以使用该数据来创建表。

在JavaScript中处理解码的JSON数据相对简单。解码后,它现在是一个可访问的object。你可以使用迭代器(jQuery做得很好)。

$.each(myJSON, function(i, val) {
    $('body').append(val + "<br />");
});