0

提示されたjGrowlsの状態を維持する方法に関するjQuery/jGrowlの質問があります。PHP/MySQLを使用して構築した通知システムがあります。それは簡単な部分です。jGrowlsを正しく表示することができました。

ここで、ユーザーが個々のjGrowlの[閉じる]をクリックするか、すべてのjGrowlを閉じる[すべて閉じる]リンクをクリックするまで、messages/jGrowlsの状態を維持したいと思います。どの通知が「読み取られた」かを管理できるusers_notificationsMySQLテーブルがあります。最善のアプローチは、close()またはbeforeClose()コールバックを使用してgetJSON(ajax)リクエストをサーバーに戻すことだと思いますが、これを作成する方法がわかりません。リクエストを通じて通知IDを返す必要があります。

<?php
if (!empty($notifications))
{
    foreach ($notifications as $notification)
    {
?>
        <script>
            <!--
            $(document).ready(function() {
                var notification = <?php echo json_encode($notification); ?>;
                $.jGrowl(notification.message, {
                    beforeClose: function(){
                        var markReadUrl = '<?php echo site_url('notifications/ajax_mark_as_read') ?>' + '/' + notification.id;
                        $.getJSON(markReadUrl, function(data) {
                            console.log(data);
                        });
                    }
                });
            });
            //-->               
        </script>
<?php
    }
}
?>

更新02/12:私は私を混乱させているものを見つけたと思います。

テストするとき、私は2つまたは3つの通知(jGrowls)を使用していました。ユーザーが個々のjGrowlクローズリンク(jGrowlの右側にある「x」リンク)をクリックすると、beforeClose()コールバック関数がトリガーされることを期待していました。'x' closeのコールバックはありますか?ユーザーが「すべて閉じる」をクリックすると、beforeClose()コールバックが正しく起動し、各jGrowlの関数がトリガーされることに注意してください。したがって、ある意味で、「すべて閉じる」は「すべてを既読にする」リンクのように機能し、「x」リンクは何もしません。これは意図された機能ですか?

4

1 に答える 1

1

その通りです。「close」または「beforeClose」を使用できる 2 つの異なるコールバックを選択できます。この時点で通知は閉じられており、次にページから通知を削除するプロセスが開始されるため、おそらく「beforeClose」を選択します。

したがって、コールバックを利用すると、次のようになります。

$.jGrowl('Message here...', {
    beforeClose: function(){
        $.ajax({
            url: '/path/to/dismiss/action',
            success: function(){}
        });
    }
});

これがすべての通知で使用するものである場合は、次のことができます...

$.jGrowl.defaults.beforeClose = function(){
    //...
}

私の推測では、何らかの形で通知を個別に追跡する必要があると思います。そうすれば、通知を却下する ajax リクエストを行うときに、主キーまたはそのようなものを返すことになります。私がお勧めすることの 1 つは、beforeOpen コールバックを使用し、data() メソッドを使用して主キーの一意の識別子を設定することです。そうすれば、メッセージをセットアップするときにバインドされ、後で閉じたときに参照することができ、他の場所で情報をジャグリングすることを心配する必要がなくなります.

お役に立てれば!

于 2013-02-12T13:13:06.750 に答える