最近开发的项目是每次点击链接都会打开一个新窗口打开页面,当在某一个页面进入消息中心处理消息后,所有打开页面的消息数更新成了让我头疼的问题,考虑过定时刷新页面,但是在打开页面较多、使用人数较多时,请求服务器次数过多影响正常功能使用。后来同事给我推荐了DWR服务器反推技术,让我眼前一亮。下面讲开发过程。
- dwr测试的例子是用的Clannad_汐的例子,我将jar包及文件导入我的项目后,测试通过。
- 接下来在我的功能-消息更新时调用 DwrPush.push(num);方法,但是调用一直不成功,无法更新消息数,我猜想是因为我消息处理页面是在layer打开的页面中,无法更新父页面的回调方法(未证实)。如下是消息页
- 然后我就将DwrPush.push(num);放到后面的父页面(统计数所在页面)的setNewsnum方法中,在消息页调用父页面的setNewsnum,成功更新了所有页面的消息数,下面简单贴下自己的代码:
//菜单页面设置消息条数函数
function setNewsnum(num){
// $("#news_num").text(num);
DwrPush.push(num);
}
// dwr待办数刷新回调方法
function DWRcallback(num) {
if(num=="0"||num==undefined||num==null){
$("#news_num").hide();
}else{
$("#news_num").text(num);
}
}
//消息页面更新消息已读,获取未读消息数,并调用上面parent页面的setNewsnum方法
$.ajax({
url:"<%=basePath %>/news/update",
type:"post",
data:{"xnIds":objid},
dataType : "json",
success : function(data){
var result = eval('(' + data + ')');
parent.setNewsnum(result.ALL_NUM);
// DwrPush.push(result.ALL_NUM);
}
});
上面代码实现后,在一个页面打开消息列表查看后,其他页面消息数也会刷新,如下
欧阳凌殇NEO 发布了14 篇原创文章 · 获赞 1 · 访问量 1万+ 私信 关注