【问题标题】:Auto refreshing unlimited divs自动刷新无限div
【发布时间】:2012-12-15 18:43:36
【问题描述】:

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

    李>

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

谢谢!

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

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

【问题讨论】:

  • 您需要使用 AJAX,并让您的 PHP 返回 Javascript 处理的结构化数据(例如 JSON 或 XML),以了解如何更新表格。设计这个不是我可以写在答案中的快速事情,但也许为您的应用程序使用 MVC 框架会简化它。
  • 他已经在使用 AJAX,阅读有关 jQuery.load(...) 的内容——实际上它是一个可以写在答案中的快速内容——阅读有关 jQuery.parseJSON(.. ..)

标签: php javascript jquery html refresh


【解决方案1】:
$('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 />");
});

【讨论】:

  • 我以前使用过 json,但我不确定我是否理解如何在这种情况下使用它。另外,我不太清楚上面的代码如何利用它来达到预期的结果。 (抱歉,还不太懂java)
  • 精通 javascript* Java 和 JavaScript 是完全不同的东西 :) 在几分钟内阅读更新后的帖子
  • 这很好地说明了我与他们的经历
  • 感谢您,它帮助很大,但我仍然难以理解要解码的 JSON 数据中包含的内容。我可以使用此代码并对该主题进行更多阅读以了解我在做什么。不过非常感谢。
  • 嗨大卫,感谢您的帮助,但我似乎仍然无法将您的答案应用到这个问题上。你能告诉我更多关于你将如何应用它的信息吗?谢谢
猜你喜欢
  • 2012-03-02
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 2011-01-08
  • 1970-01-01
  • 1970-01-01
  • 2013-02-06
相关资源
最近更新 更多