我在servlet中设置会话变量,并希望在javascript中访问该变量。
ps = con.prepareStatement("select * from USERDETAILS where username=? and password=?");
ps.setString(1, username);
session.setAttribute("userName", username);
我在javascript函数中试过这些。但它没有用......
var name = ${userName};
var name = '<%= Session["userName"] %>';
答案 0 :(得分:7)
似乎你应该可以使用getAttribute()
:
var name = '<%= session.getAttribute("userName") %>';
但是,这取决于运行该文件的Java来替换嵌入的<%= ... %>
,这可能不是单独的.js
文件中的情况。
答案 1 :(得分:2)
尝试使用此代码访问会话:
var myName= '<%= Session["myName"]%>';
答案 2 :(得分:1)
除非您的会话完全存储在cookie中,否则您无法在JavaScript中读取会话变量。您应该在页面生成期间将变量内容存储在JavaScript变量中,或者稍后使用AJAX来获取它。
答案 3 :(得分:0)
您是否在调试器(javascript调试器)中检查了包含的名称?
您是否尝试为某些html指定名称,以确保数据分配正确?
您是否尝试删除引号?
您的代码也应该在主页面上,以便服务器引擎通过它并将Session(“userName”)替换为实际值。
答案 4 :(得分:0)
对于那些使用以下代码获取错误的人,例如&lt;%vs。
var name = '<%= session.getAttribute("username") %>';
我遇到了同样的问题,但事实证明我将脚本放在代码中的错误位置。
因此,您最好检查代码的放置位置。
希望这有帮助
答案 5 :(得分:0)
试试这个 - &gt; {sessionScope.username}
默认情况下,JSP页面可以使用请求,会话和应用程序对象。因此,您可以使用EL语法访问。
下表显示了EL可用的IMPLICIT对象。
Implicit object Description
1. pageScope Scoped variables from page scope
2. requestScope Scoped variables from request scope
3. sessionScope Scoped variables from session scope
4. applicationScope Scoped variables from application scope
5. param Request parameters as strings
6. paramValues Request parameters as collections of strings
7. header HTTP request headers as strings
8. headerValues HTTP request headers as collections of strings
9. initParam Context-initialization parameters
10. cookie Cookie values
11. pageContext The JSP PageContext object for the current page