2

我目前可以使用 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. 虽然我知道可以根据数据库中的某些内容更改而不是时间延迟来刷新项目,但是考虑到上面列出的要求,最好的方法是什么?

我可能会走得很远,这是对每个问题的简单回答,但我感谢任何和所有输入。

谢谢!

ps如果有帮助,我目前用来创建表的函数如下(我知道它可以做得更干净,但它有点像一个学习项目):

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>";
}
4

1 回答 1

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 />");
});
于 2012-12-31T17:38:38.200 回答