我的页面包含三个面板,用于员工关注,薪水,生产。我必须通过SignalR实时更新面板 我的中心课
public class MessagesHub : Hub
{
private string ConnectionString = ConfigurationManager.ConnectionStrings["database"].ToString();
[HubMethodName("sendMessages")]
public void SendMessages()
{
IHubContext context = GlobalHost.ConnectionManager.GetHubContext<MessagesHub>();
context.Clients.All.updateMessages();
}
}
在控制器
中public ActionResult Panels()
{
...code..
return Partial("_panelData", model);
}
部分页面包含面板以及要显示的数据 在主视图页面(面板)中,脚本标记
<script>
$(function () {
// Declare a proxy to reference the hub.
var notifications = $.connection.messagesHub;
//debugger;
// Create a function that the hub can call to broadcast messages.
notifications.client.updateMessages = function () {
getData()
};
// Start the connection.
$.connection.hub.start().done(function () {
getData();
}).fail(function (e) {
alert(e);
});
});
function getData() {
$.ajax({
url: '/PanelController/Panels',
type: 'GET',
dataType: 'html'
}).success(function (result) {
$('.panel').html(result)
}).error(function () {
window.console.log("failure");
});
}
</script>
页面加载时工作正常。但我也希望它每隔1分钟加载一次数据 提前致谢
答案 0 :(得分:1)
也许我很想念,但对我而言,SignalR在那里毫无用处。这样的事情应该有效:
$(function() {
getData();
});
function getData() {
$.ajax({
url: '/PanelController/Panels',
type: 'GET',
dataType: 'html'
}).success(function(result) {
$('.panel').html(result)
window.setTimeout(getData(), 60000)
}).error(function() {
window.console.log("failure");
});
}
如果你想保留信号灯,唯一要做的就是添加: {(1}}在getData函数()
的回调中