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 に保存して、再び表示されないようにすることはできますか?

ありがとう。


OK、コードを更新して今のようにしました。

        $(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);

    });

しかし、うなり声の通知を閉じると、アラートが発生しませんか?! クッキーに保存するコードを入れる前に、それが機能することを確認するためにそこに持っています。これは正しいように見えますか?

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

同様の状況で、IIS バックエンドで実行されている rss ファイルと、.xml を編集するための無料ツールを使用しました。次に、RSS ウィジェットを使用して最新のニュースを表示しました。一部の人は RSS リーダーを使用し、他の人は Outlook も使用しました。

すばやく簡単。

于 2010-04-09T11:54:45.697 に答える
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 に答える