Ajax轮询更改session后前台页面session更新问题

3/8/2017来源:ASP.NET技巧人气:5256

先说我遇到的问题,我在写一个bbs系统,用到 了struts2 mybatis sPRing 三个框架,在写查询所有的帖子并且显示在主页面时,我是用struts 2 带的 <s>标签 遍历session数据,将所有的帖子存在了session中, 但是 我想实现一个即时刷新的功能,即有其他人在发帖子 然后我在这可以看到直接更新出来。

最开始我采用的是Ajax 调用后台查询数据库更新session 然后我没返回任何数据  当然结果可想而知,前面没更新。然后我看了看别人的 博客 看了看别人的论坛。发现没几个能写好的  然后我就换个思路,不更新session了 然后将list转成json数据并且返回。

话不多说 上代码

后台代码:

		HttpServletRequest request=ServletActionContext.getRequest();
		HttpServletResponse response=ServletActionContext.getResponse();
		response.setCharacterEncoding("utf-8");//解决乱码问题
	
		
		List<Note>list=userService.checknote();
		
		//将list集合转换成json格式
		String json=JSONArray.fromObject(list).toString();
		response.getWriter().print(json);
		return null;
 前台js代码

<script type="text/javascript">
 window.setInterval("shownote();",1000);//定时调用这个函数 达到即时刷新的作用
//页面一加载完就运行
$(function(){
	shownote();
	});
function shownote(){
	$.post("user_checkNote",function(data){
			var dataObj=eval("("+data+")");
				temp=document.getElementById("ul");
				lis=temp.getElementsByTagName("li").length;
				if(lis<dataObj.length){
					$("#ul").html("");
					for(var i=0;i<dataObj.length;i++){
						
						$("#ul").append("<li> <a href='${pageContext.request.contextPath }/user_lookdetail?id="+dataObj[i].id+" '>"+dataObj[i].notehead+"</a><br><br></li>");
					}
				}
	});

} 
</script>
下面是jsp代码中的<ul><li>

<h3>	
				
				<ul id="ul">
				
				
				
				</ul>
				
									
					
				</h3>

OK 这个就行了 主要是ajax返回数据后 用for循环遍历  用

$("#ul").append

将遍历的添加到<ul>里面,添加之前 应该先判断后台数据是否更新 若更新的话将原本页面上的数据清空,在重新添加。若没有更新就不做操作。