Ajax轮询更改session后前台页面session更新问题
先说我遇到的问题,我在写一个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>里面,添加之前 应该先判断后台数据是否更新 若更新的话将原本页面上的数据清空,在重新添加。若没有更新就不做操作。