我正在尝试从jquery动态访问 session 变量。
这工作
console.log(“$ {session.application?.sideNavOptions [0]}”);;
但是我需要做这样的事情。
var application = $(“#app”)。html();
console.log(“$ {session。” + application +“?. sideNavOptions [0]}”);
可能吗?
提前致谢
最佳答案
您正在尝试以一种行不通的方式在此处混合服务器和客户端(如我的评论中所述)。这是另一种选择。
创建一个简单的 Controller ,您可以将ajax请求传递给特定的 session 变量。 Controller 可能看起来像这样
package com.example
import grails.converters.JSON
class MySimpleController {
def gimmieValue() {
String value = session["${param.key}"] as String
render [result: value] as JSON
}
}
该 Controller 基本上采用一个称为“键”的参数,并将返回使用该键存储在 session 中的任何内容。生成的JSON对象的值在属性'result'下。
使用此 Controller 的客户端代码可能如下所示:
$.ajax({
dataType: "json",
url: "${createLink(controller: 'mySimple', action: 'gimmieValue')}",
data: { key: "the-key-from-the-session-you-want" },
success: function(data) {
console.log("The server says that the value is: " + data.result);
}
}
这是一个非常简单的示例,您应该理解,您实际上是在通过该 Controller 打开整个 session 存储。这构成了安全威胁。我建议您锁定 Controller 中可以返回和不能返回的键,而不是仅允许任何键(如我所示)。
假设您也在客户端使用jQuery。希望这可以帮助。
关于jquery - 在grails中从jquery动态获取 session 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23480535/