2011-02-16 162 views
0

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

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

什么没有工作?你期望什么/结果是什么? – GvS 2011-02-16 16:41:20

回答

2

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

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

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

它根本没有刷新。你能告诉我如何改变上面的代码吗? – asif 2011-02-16 16:44:21

+0

hi @gor:我用你的代码,它工作。非常感谢您的帮助 – asif 2011-02-16 17:02:25

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秒...