Динамические уведомления с использованием jQuery - PullRequest
1 голос
/ 09 апреля 2010

В настоящее время я создаю домашнюю страницу для наших сотрудников, которая должна быть установлена ​​в качестве домашней страницы в их браузере.В настоящее время я строю объект, благодаря которому назначенные сотрудники могут отправлять уведомления всем сотрудникам.Они появятся на их домашней странице, и им не нужно будет обновлять страницу.

В настоящее время у меня есть приведенный ниже код, который отлично работает для 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);

    });

Однако мои предупреждения не срабатывают, когда я закрываю уведомление о рычании ?!У меня есть это, чтобы проверить, что это работает, прежде чем вставлять код, чтобы сохранить его в куки.Это выглядит правильно?

Ответы [ 3 ]

2 голосов
/ 09 апреля 2010

вы можете вывести все сообщения в виде списка в выводе 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 });
    }
});
0 голосов
/ 09 апреля 2010

В аналогичной ситуации мы использовали rss-файл, работающий на бэкэнде IIS с бесплатным инструментом для редактирования .xml. Затем мы использовали виджет rss для отображения последних новостей, некоторые люди использовали rss-ридер, а другие тоже использовали Outlook.

Быстро и просто.

0 голосов
/ 09 апреля 2010

Что касается проблемы с 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'
...