首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新intervals上的视图模型

刷新intervals上的视图模型
EN

Stack Overflow用户
提问于 2011-04-13 20:26:33
回答 2查看 3.2K关注 0票数 0

我有一个带有ViewModels列表的视图,它基于我的数据库中的数据。我提供了这个列表,但我希望该列表在数据库中的数据发生变化时以给定的时间间隔(5秒)刷新。我的控制器中有一个更新ViewModels的操作。我使用MVC3和Razor。我想需要一些JavaScript/jQuery。

我的脚本:

代码语言:javascript
复制
<script type="text/javascript">
$(document).ready(function () {
    var hdRaceId = $("#hdRaceId");

    setInterval("GetList()", 5000);
    function GetList() {
        $.get("/Timer/Update/?id=" + hdRaceId.val());
    }

我在控制器中的操作:

代码语言:javascript
复制
        public ActionResult Update(int id)
    {
        var raceintermediates = RaceIntermediateModel.GetRaceintermediatesForRace(id);
        return View("Speaker", raceintermediates);
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-13 20:45:53

如果您想刷新DOM的某一部分,则需要为AJAX请求定义一个成功的回调。如下所示:

代码语言:javascript
复制
window.setInterval(function() {
    var hdRaceId = $('#hdRaceId').val(); 
    var updateUrl = '@Url.Action("Update", "Timer")';
    $.get(updateUrl, { id: hdRaceId }, function(result) {
        $('#someDivId').html(result);
    });
}, 5000);

其中,您有一些div将托管部分视图结果:

代码语言:javascript
复制
<div id="someDivId"></div>

还有一些浏览器,比如IE,可能会缓存GET请求。为了避免这种情况,您可以使用以下命令:

代码语言:javascript
复制
window.setInterval(function() {
    var hdRaceId = $('#hdRaceId').val(); 
    var updateUrl = '@Url.Action("Update", "Timer")';
    $.ajax({
        url: updateUrl,
        type: 'GET',
        data: { id: hdRaceId }, 
        cache: false,
        success: function(result) {
            $('#someDivId').html(result);
        }
    });
}, 5000);
票数 3
EN

Stack Overflow用户

发布于 2011-04-13 20:29:09

setTimeout(GetRefereshedList,5000);

在GetRefreshedList中,..you可以使用$.ajax()方法从服务器获取新的列表,并在客户端更新所有视图。

如果你能分享你的代码,我可以再扩展一下。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5649172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档