在 Javascript 中刷新 Java 会话对象

发布于 2024-11-18 14:40:05 字数 863 浏览 2 评论 0原文

我正在尝试使用 javascript 在检测到会话对象发生更改后执行某些操作。但是,在我调用 UpdateServlet 后,javascript 没有检测到会话对象的更改。所有这些都是在同一页面上完成的(即没有页面刷新)

请帮忙!谢谢。

index.jsp

<%
     //initial settings
     session.setAttribute("dataUpdated", "false");   

%>
<script>

   $(function() {
         var updates = '<%=session.getAttribute("dataUpdated")%>';

         alert(updates);
         //Shows false even after update

      if (updates=="true"){
          //alert("Updated");
      }



   });
 </script>

UpdateServlet.java

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

       HttpSession session = request.getSession();
       session.setAttribute("dataUpdated", "true");
       //session object set to true

}

I am trying to use javascript to do something once it detects a change in the session object. However, javascript does not detect the change in the session object after i have called UpdateServlet. All these is done on the same page (ie. there is no refreshing of page)

Please help! Thanks.

index.jsp

<%
     //initial settings
     session.setAttribute("dataUpdated", "false");   

%>
<script>

   $(function() {
         var updates = '<%=session.getAttribute("dataUpdated")%>';

         alert(updates);
         //Shows false even after update

      if (updates=="true"){
          //alert("Updated");
      }



   });
 </script>

UpdateServlet.java

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

       HttpSession session = request.getSession();
       session.setAttribute("dataUpdated", "true");
       //session object set to true

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寂寞笑我太脆弱 2024-11-25 14:40:05

您必须使用 Ajax 才能检查此更改。您可以使用 setInterval 定期检查,如下所示:

setInterval(function(){
   //Here goes your ajax call
   $.ajax({
     ...
     type: 'post',
     success: function(data){
        ...            
        if(objectChanged){
           //Do your stuff here
        }  
     }
   });
}, 5000); //Check each 5 seconds

我的建议是使用 POST 方法进行 ajax 调用以避免缓存(如果缓存,则不会检测到任何更改)

希望这会有所帮助。干杯

PS:我使用 jQuery 因为我看到你在你的代码中使用它

You have to use Ajax in order to check this change. You could check periodically with setInterval like this:

setInterval(function(){
   //Here goes your ajax call
   $.ajax({
     ...
     type: 'post',
     success: function(data){
        ...            
        if(objectChanged){
           //Do your stuff here
        }  
     }
   });
}, 5000); //Check each 5 seconds

My advice is to do your ajax call with POST method to avoid caching (if it caches, no change will be detected)

Hope this helps. Cheers

PS: I used jQuery cause I saw you were using it on your code

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文