如何在同一页面的JSP范围内读取JS变量的值
How to read the value of variable in JS in the scope of JSP on the same page?
我有一个JSP页面,其中使用第三方登录插件,这是JS。登录成功后,在JS中获得的用户id必须在JSP中使用,通过存储该值来维护会话。
为此,我尝试"操纵"jQuery,但只有当JS值是文字或预先知道时才有效。但是在这种情况下,value是在运行时按每次登录获取的。
也试过<% String s = "<script>document.writeln(var)</script>"; %>
还是上面的问题。
document.getElementById("ppurl").innerHTML = ppurl;
打印该值。但是我想把它存储起来。
假设您的第三方登录插件是客户端 JavaScript:
请记住,当页面到达客户端时,JavaScript将运行。JSP代码早已完成,因此不再出现在图中。
你有三个选项,我可以立即看到:
- 使用Ajax或类似的方式向服务器发送数据。
- 刷新页面(将登录数据作为刷新的一部分发送到服务器)
- 通过DOM更新页面上你想要的值
#1和#2应该是不言自明的。
For #3:假设你在页面上有各种各样的表单,你想确保登录令牌或无论它是你从客户端插件得到的表单使用一个隐藏字段的形式与名称tokenField
发送。你可以这样做:
function putTokenOnForms(token) {
var forms, index, form;
forms = document.getElementsByTagName("form");
for (index = 0; index < forms.length; ++index) {
form = forms[index];
if (form.tokenField) {
form.tokenField.value = token;
}
}
}
您可以对a
元素中的链接执行相同的操作(添加到返回到服务器的每个链接的href
属性),等等。
向客户端输出JavaScript的页面无法从该JavaScript中读取数据。
你需要发起一个新的HTTP请求(例如使用XMLHttpRequest或设置location.href
),将数据传递回服务器,然后读入(例如从查询字符串或POST数据)
使用JS将其存储在cookie中。在JSP中读取它。
在你的JS中,当你得到userID后,你可以这样做:
document.cookie = 'myuserid='+userID;
在JSP中,您可以像这样读取它:
Cookie[] cookies = request.getCookies();
String userID;
for(int i = 0; i < cookies.length; i++) {
Cookie c = cookies[i];
if (c.getName().equals("myuserid")) {
userID = c.getValue(); // c.getValue() will return the userID
break;
}
}
相关文章:
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- 如何使用D3生成特定范围内的随机颜色
- 将自定义css保持在角度范围内
- Angular JS-文本框未在独立范围内更新
- cookie不在网站范围内
- 获取给定JavaScript范围内的解析函数
- 如何在JavaScript中使用此函数对范围内的所有数字求和
- JavaScript-仅验证数值并且在范围内
- JS:从数组中查找特定范围内的最低/最高数字
- 试图检查表单中的值是否为一个设定范围内的数字
- 在十进制范围内搜索
- 基于日期范围的一组日期范围内的天数
- 如何在 Google 应用脚本中 sendEmail 函数的范围内的唯一非空白列中返回值
- 将数组传递给函数或确保它在范围内
- socket.io 客户端是否必须存在于全局范围内
- 查找某个日期范围内的可用天数
- 网站范围内jQuery/javascript选择器的最佳实践
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- JS日期对象在某个范围内的百分比
- 如何在同一页面的JSP范围内读取JS变量的值