我想每隔3秒使用jquery.load和ajax刷新我的MVC视图。这将是什么语法? 我使用下面的代码,但它没有用。
$(document).ready(function() {
setInterval(function() {
var url = '<%= Url.Action("Index", "LiveGame") %>';
$.getJSON(url, null, function() { });
}
, 3000);
});
答案 0 :(得分:2)
您应该使用load
或get
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秒......