【问题标题】:auto refresh MVC view自动刷新 MVC 视图
【发布时间】:2011-02-16 16:36:17
【问题描述】:

我想在每 3 秒后使用 jquery.load 和 ajax 刷新我的 MVC 视图。这将是什么语法? 我使用了下面的代码,但它不起作用。

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

【问题讨论】:

  • 什么不起作用?你期望什么/结果是什么?

标签: jquery asp.net-mvc ajax refresh


【解决方案1】:

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

您的代码可能如下所示:

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

【讨论】:

  • 它根本没有刷新。你能告诉我如何更改上面的代码吗?
  • 嗨@gor:我使用了你的代码并且它有效。非常感谢您的帮助
【解决方案2】:

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

或者你按照@gor 的建议去做 - 这不是 ajax 顺便说一句。

编辑 假设您的 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 告诉你的去做,这意味着刷新每 3 秒整个 HTML 页面...

【讨论】:

  • 嗨@rsenna:我是 jquery 和 ajax 的新手。你能把代码发给我吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2018-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-20
  • 1970-01-01
相关资源
最近更新 更多