我有一個jQuery/jGrowl有關如何保持呈現的jGrowls狀態的問題。我有一個使用PHP/MySQL構建的通知系統。這是很容易的部分。我設法讓jGrowls正確顯示。jGrowl和Close回調請求Ajax?
現在,我想維護消息/ jGrowls的狀態,直到用戶點擊每個單獨的jGrowl的「關閉」或關閉所有jGrowls的「關閉所有」鏈接。我有一個users_notifications MySQL表,我可以管理哪些通知已被「讀取」。我認爲最好的方法是使用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右邊的'x'鏈接時,會觸發beforeClose()回調函數。是否有'x'的回調關閉?請注意,當用戶點擊「全部關閉」時,beforeClose()回調會正確激發,並觸發每個jGrowl的函數。所以,從某種意義上說,「全部關閉」就像一個「全部標記爲已讀」鏈接,而「x」鏈接什麼也不做。這是預期的功能嗎?
謝謝你回覆斯坦。我真的沒想到作者或jGrowl會迴應。關於beforeClose(),我在上面添加了一些額外的評論(更新02/12)。我似乎無法接近'x'來觸發beforeClose()回調函數。 「關閉所有」似乎觸發BeforeClose()之前。 – jjwdesign 2013-02-12 17:50:00
進一步測試:如果我更改爲使用close()回調,則單擊'x'或'close all'將觸發close()回調函數。與closeBefore(),我只看到它觸發'關閉所有'。 – jjwdesign 2013-02-12 19:27:34
哎呀!在關閉()之前單獨關閉不觸發實際上是一個錯誤。我已經在github上提交了它,並將在今天晚上修復它。僅供參考:https://github.com/stanlemon/jGrowl/issues/4 – stanlemon 2013-02-13 13:48:38