【问题标题】:Refresh table data every 5 seconds每 5 秒刷新一次表数据
【发布时间】:2010-07-02 15:36:06
【问题描述】:

我目前处于设计阶段,想知道如何每 5 秒更新一次表格。

我的表格将显示从我的模型返回的只读数据。

通常我的视图只有<table></table> HTML,然后是一个 foreach 循环来写出数据。

但是,因为我想每 5 秒刷新一次整个表,所以我不确定如何实现它。

我知道有 javascript setinterval 函数,但我也不确定此时该做什么。会是这样吗?

例如/

function getdata()
{
    $.getJSON("/mycontroller/mymethod"), 

                 function(data) {

                $.each(data, function(i, item) {
                    var row = {  item.ID, item.Date,
                         item.Title
                    };
               $(#table).tableInsertRows(row);
                });

            });
}
    setInterval( "getdata", 5000 );

【问题讨论】:

  • 好点!它可能包含足够多的寻呼机控件,即/ >>
  • 这么多数据真的会每 5 秒改变一次,还是只会改变一部分?
  • 是的,它与生产环境挂钩
  • Microsoft 创建的 Data Linking 可能对您有用。但是,如果有 这么 多数据需要分页,并且它每 5 秒刷新一次,那么用户是否能够在其下方刷新之前阅读/理解它?

标签: jquery asp.net-mvc ajax asp.net-mvc-2


【解决方案1】:

mymethod 操作呈现视图而不是返回 JSON 可能是最简单的。然后您可以将 div 的 innerHTML 设置为 ajax 响应。

否则你的方法会奏效,但显然你必须先删除现有的表行:

$('#table').tableRemoveRows({from:0, length:???});

编辑

重新阅读您的问题,听起来您对setInterval 的询问比实际创建表格的更多。你需要不断地重新注册回调,所以是这样的:

function getdata()
{
    $.getJSON("/mycontroller/mymethod"), function(data) {

        $.each(data, function(i, item) {
                var row = {  item.ID, item.Date,
                     item.Title
                };
           $(#table).tableInsertRows(row);
        });

        setInterval( getdata, 5000 );

    });
}
setInterval( getdata, 5000 );

【讨论】:

  • 当您返回部分视图时,在 AJAX 成功时是否只看到原始 HTML,使您只需设置 innerHTML?
  • 我真的在问这两个问题。我想我得到了 setInterval,但不确定获取新数据并绘制到浏览器的最佳方式
  • @Jon 在服务器上你的return View() 来自你的mymethod 操作。在客户端上,您将使用 $.get 而不是 $.getJSON,然后只需获取 responseText。
  • 根据数据量,您可能需要考虑查看 javascript 模板,以便可以返回 JSON 而不是标记。 (MS 有一个我喜欢的 beta 版本。)
猜你喜欢
  • 2016-03-21
  • 1970-01-01
  • 1970-01-01
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多