我想知道和研究的是找出我如何拥有一个页面/功能或者每隔几秒钟没有加载什么或者不是那样我可以在CodeIgniter CMS中立即向我的用户报告通知他们在收件箱中有新的个人信息。
当用户点击信封时,当用户从登录屏幕进入仪表板时,它将显示最后5条消息,如果他们收到同步的pm消息,它将立即通过显示的小覆盖图通知他们如果红色圆圈已经存在,则会增加红色圆圈或将其添加为1。
答案 0 :(得分:2)
在您的控制器中:
$this->load->library('javascript');
在您看来:
<script>
$(window).load(function checkMessages() {
$.ajax({
url: 'instant_messenger.php',
success: function(data) {
$('messagebox').html(data);
}});
setTimeout('checkMessages', 5000);
});
</script>
...其中'instant_messenger.php'是检查新邮件的脚本,'messagebox'是您希望邮件显示的html元素。
这是一个基本示例,但此脚本将每5秒运行一次check_messages.php,并将输出放在用户页面上,而不必重新加载。
答案 1 :(得分:1)
我假设您的javascript已经加载,我假设您也使用了jquery。就这样。
我的建议与乍得有点类似。但从某种意义上说,如果你想因为某种原因独立地调用它,那么它就更可重复使用了。
var $messageCountJSON;
var messageTimer = '';
var messageInterval = 5;
//assumed JSON response is {"count":"20"} for example sake.
function messageCount(displayElementID)
{
$.get('/url/to/script/', function(data)
{
$messageCountJSON = data;
}, 'json');
if(displayElementID != null && displayElementID != undefined && displayElementID != '')
{
$('#'+displayElementID).html(data.count);
}
}
$(document).ready(function()
{
messageTimer = setInterval(function(){messageCount();}, messageInterval*1000);
});
//you can optionally kill the timed interval with something like
$('#element').click(function(){clearInterval(messageTimer);})
我当然只是随心所欲地将这个从我的屁股中拉出来,因为我没有100%经过测试,但值得一试。
值得一提的是,这不是即时通知。这是异步的;通知,这意味着在这种情况下,您每隔5秒就会向脚本发送一个get请求,并相应地从中获取数据。如果您想要即时通知,可以查看同步;脚本点和客户端之间传输的数据永远不会关闭。两者都有优势和缺点。异步更常用作2邪恶中的较小者。更多的是Synchronous没有合适的硬件来支持它而没有正确的设置,只会导致您的网站锁定并冻结用户浏览器。