javascript中的会话变量没有更新

时间:2014-06-25 07:29:53

标签: javascript jsp session scope

我正在研究两个jsp(索引和导航)。我通过索引上的ajax调用html代码的一部分。我从navigation.jsp页面调用函数“demo()”,并在index.jsp页面的脚本中定义函数。这里我在navigation.jsp页面的会话变量中设置一些变量值,但是当我在index.jsp页面上捕获它时,它保存第一个值。但是当我调用navigation.jsp页面时,会话变量没有更新。有没有scopr相关的问题????

index.jsp page

     <script>
                    function demo()
                    {
                        var a ='<%= session.getAttribute("ab") %>';
                        alert(a);
                    }<script>

navigation.jsp page

     if(chk1.contains((Integer)value));
        { 
            ch = (String)chk1.get((Integer)value);
            session.setAttribute("ab", ch);
            String bu = (String)session.getAttribute("ab");
            out.println(bu);
        }

    <a onclick="demo()">demo</a>

1 个答案:

答案 0 :(得分:0)

调用JSP页面时,会按以下顺序发生以下情况:

  • 服务器检查.jsp是否已经编译,以及自上次编译以来它是否已更改。
  • Server通过Jasper编译器运行jsp,它将jsp解释为Java代码,任何非Java(CSS,HTML,JavaScript等)放在String中。
  • 编译并执行Java代码。
  • 结果将放入响应中并发送给用户。

因此,您的声明:<%= session.getAttribute("ab") %>在HTML发送给用户之前执行,var a在调用null函数之前始终设置为demo()


有关详细信息,请查看我的另一篇帖子JSP inside ListItems onclick

如何验证?

右键单击浏览器并查看视图源并查看demo()函数。

注意:始终尝试避免 Scriplet元素并使用JSP Standard Tag Library