1

我目前正在为我们的员工建立一个主页,该主页将在他们的浏览器中设置为主页。我目前正在建立一个设施,指定的员工可以向所有员工发送通知。这些将在他们的主页上弹出,而无需他们刷新页面。

我目前有下面的代码,它适用于 1 个通知,但一次可能有超过 1 个等待显示。我已经切换到输出 json 但我不确定如何修改我的代码来使用它。

我正在使用 PeriodicalUpdater 和 jGrowl 插件来获得此功能,如果有更好的选择,请随时提出建议。

    $.PeriodicalUpdater({
        url: 'getNotifications.aspx',
        maxTimeout: 6000,
        type: 'json'
    },
    function(data) {
        var message = data;
        if (message != '') {
            $.jGrowl(message, { sticky: true });
        }
    });

作为一项附加功能,当用户关闭通知以便他们不再看到它时,是否可以将其存储在 cookie 中?

谢谢。


好的,我已经更新了代码,现在是这样;

        $(document).ready(function() {
        var alreadyGrowled = new Array();

        var growlCheckNew = function() {
            $.getJSON('getNotifications.aspx', function(data) {
                $(data).each(function(entryIndex,entry) {
                    var newMessage = true;
                    $(alreadyGrowled).each(function(index,msg_id) {
                        if (entry['ID'] == msg_id) {
                            newMessage = false;
                        }
                    });

                    if (newMessage == true) {
                        $.jGrowl(entry['Message'], {
                            sticky: true,
                            header: entry['Title'],
                            beforeClose: function(e,m) {
                                alert('About to close this message');
                            }
                        });
                    }
                    alreadyGrowled.push(entry['ID']);
                });
            });
        }

        growlCheckNew();

        var msgTimer = setInterval(growlCheckNew, 1000);

    });

但是,当我关闭咆哮通知时,我的警报没有触发?!在将一些代码保存到cookie之前,我已经在那里检查它是否有效。这看起来对吗?

4

3 回答 3

2

您可以将所有消息作为 JSON 输出中的列表输出,并简单地在 javascript 中迭代消息列表。

JSON输出:

{
    messages:['msg1', 'msg2', 'msg3']
}

javascript:

$.PeriodicalUpdater({
    url: 'getNotifications.aspx',
    maxTimeout: 6000,
    type: 'json'
},
function(data) {
    for(message in data.messages) {
        $.jGrowl(message, { sticky: true });
    }
});
于 2010-04-09T11:40:24.607 回答
0

至于 cookie 问题,您可以使用jQuery Cookie 插件

句法:

// To set a cookie ‘foo’ with value 'bar':
$.cookie('foo', 'bar');
// To get the value stored in a cookie:
$.cookie('foo'); // 'bar'
于 2010-04-09T11:29:06.530 回答
0

在类似的情况下,我们使用在 IIS 后端运行的 rss 文件和一个免费工具来编辑 .xml。然后我们使用 rss 小部件来显示最新消息,有些人使用 rss 阅读器,有些人也使用 Outlook。

快速简单。

于 2010-04-09T11:54:45.697 回答