0

我有带有表格的 html 页面。简化它可以看:

<Row_ID>, <bla-bla-bla>, <_XXX.XX%_ is complete> 

在 C# 中,我有一个通过 ID 评估“% is complete”的函数。但它的操作可能需要一些时间(不是即时的,可能会导致一些延迟)

现在我需要实现“% is complete”的自动刷新,它将在一两分钟的间隔内更新数据。我不想重新加载整个页面或整个表格(如果我通过 ajax 来完成)。因为用户可能会查看页面并且重新加载会阻止其当前位置(甚至表中的行数)。

所以我考虑调用一些函数并从服务器获取值(通过JSON?)的javascript setTimeout 但我不确定当javascript函数请求数据时网页冻结。可能存在另一种更新方法吗?

欢迎任何版本或建议!

对不起我的英语不好。

4

1 回答 1

1

这应该实现你的意思。我假设您将进行一次调用以返回多个结果的 JSON 结果(最有效)。此外,jQuery ajax调用是异步的,所以不会有页面“冻结”——同样,只是猜测你的 MVC 模型设置,但我想你明白了吗?

<table>
    @foreach(var line in Model)
    {
    <tr>
        <td>@line.Id</td>
        <td>@line.Something</td>
        <td id="p-@line.Id">@line.Percentage% complete</td>                   
    </tr>
    }
</table>

JS:

var to;
$().ready(function() {
    ResetUpdate();
});

function Update() {
    // do your $.ajax();
    // if success,
    // assuming return data is an array like:
    var data = [ {id:1, p:26}, {id:2, p:99} ];
    for(var i = 0; i < data.length; i++) {
        $('#p-' + data[i].id).html(data[i].p + '% complete');            
    }
    ResetUpdate();
}

function ResetUpdate() {
    to = setTimeout("Update()", 120000); //2 minutes
}

这是 jsFiddle

于 2012-08-22T18:18:10.997 回答