当服务器端发生更改时,为用户创建AJAX警报
本文关键字:用户 创建 AJAX 警报 服务器端 | 更新日期: 2023-09-27 18:01:30
我有一个网站,员工可以登录和管理东西。
每个员工都有一个待办事项列表。可以为几个不同的事情添加条目到员工列表中,例如新客户注册。当一个项目被添加到员工的列表中时,我希望在登录的员工屏幕上显示一个ajax对话框,然后他们可以简单地取消该对话框。
做这件事的最好方法是什么?我使用c#, MVC 3和Razor
您可以使用setInterval javascript方法轮询服务器的更新。这将允许您定期向服务器发送AJAX请求以检查更新,如果满足某些条件则向用户发出警报。
例如,你可以有一个这样的控制器动作:
[Authorize]
public ActionResult Poll()
{
bool isUpdated = CheckForUpdates(User.Identity.Name);
return Json(isUpdated, JsonRequestBehavior.AllowGet);
}
和view:
var intervalId = window.setInterval(function() {
// send AJAX requests every 4 seconds to check for updates
$.getJSON('@Url.Action("poll")', function(isUpdated) {
if (isUpdated) {
// TODO: use some fancy popup instead of an alert :-)
alert('There are updates');
window.clearInterval(intervalId);
}
});
}, 4000);
您可以使用的另一种技术是服务器在有更新时向客户端推送通知。HTML5 WebSockets允许你这样做。它的优点是它更加优化,因为它避免了连续轮询和大量AJAX请求,缺点是它还没有得到浏览器的广泛支持。现代浏览器支持它,但由于它仍然是一个草案,它可能会改变,所以它在公共互联网上不是很受欢迎。另一方面,如果你可以控制用户的浏览器,这可能是一个非常好的解决方案。
如果你决定走这条路,你可能会查看这个人的博客
不要使用setinterval,因为无论调用函数是否完成,它都会触发。使用settimeout代替。最后在函数内部调用它。
你可以使用jquery UI对话框:
http://jqueryui.com/demos/dialog/非常适合你的情况。
希望能有所帮助
在客户端使用Jquery的ajax函数轮询服务器以获取更新。例如:
$.get("/service/getNewItems/", function (data) {
if (data != null) {
// display new items in a div
}
else {
//alert('null');
}
});