提示された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」リンクは何もしません。これは意図された機能ですか?