自动刷新MVC视图

时间:2011-02-16 16:36:18

标签: jquery asp.net-mvc ajax refresh

我想每隔3秒使用jquery.load和ajax刷新我的MVC视图。这将是什么语法? 我使用下面的代码,但它没有用。

$(document).ready(function() {
  setInterval(function() {
        var url = '<%= Url.Action("Index", "LiveGame") %>';
        $.getJSON(url, null, function() { });
    }
                    , 3000);
});

2 个答案:

答案 0 :(得分:2)

您应该使用loadget jQuery方法。 getJSON以JSON格式返回结果,而您的视图返回HTML。

您的代码可能看起来像这样:

$(document).ready(function() {
    setInterval(function() {
        var url = '<%= Url.Action("Index", "LiveGame") %>';
        $('body').load(url);
    }, 3000);
});

答案 1 :(得分:1)

当然它不会刷新任何东西 - 毕竟这是一个ajax调用。您还必须实现将采用ajax方法返回的值并将其动态放置到视图中的代码...

或者你做的是@gor建议你 - 这不是ajax btw。

修改假设您的JSON数据返回name字段,并且视图中的输入文本字段ID = txtName。这就是(ajax)这样做的方式:

$(document).ready(function() {
    setInterval(function() {
            var url = '<%= Url.Action("Index", "LiveGame") %>';
            $.getJSON(
                url,
                null,
                function(data) {
                    $('#txtName').val(data.name);
                }
            );
        },
        3000
    );
});

请注意,您没有刷新“视图” - 您将每个返回的JSON值分别刷新到相应的HTML元素中。这就是ajax的意思 - 能够使用DOM操作动态更改值,而无需从Web服务器加载整个新页面......

这也意味着您的服务器端方法也应该返回一个有效的JSON对象。

这可能听起来像是太多的工作 - 如果是这样的话,你真的只想刷新页面而不处理异步ajax调用和序列化JSON对象,只需要做@gor告诉你要做的事情,这意味着刷新整个HTML页面每3秒......