当服务器端发生更改时,为用户创建AJAX警报

本文关键字:用户 创建 AJAX 警报 服务器端 | 更新日期: 2023-09-27 18:01:30

我有一个网站,员工可以登录和管理东西。

每个员工都有一个待办事项列表。可以为几个不同的事情添加条目到员工列表中,例如新客户注册。当一个项目被添加到员工的列表中时,我希望在登录的员工屏幕上显示一个ajax对话框,然后他们可以简单地取消该对话框。

做这件事的最好方法是什么?我使用c#, MVC 3和Razor

当服务器端发生更改时,为用户创建AJAX警报

您可以使用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');
        }
    });