我试图动态地从jquery访问会话变量。
这很有效 的console.log(" $ {session.application .sideNavOptions [0]}&#34);
但我需要做这样的事情。
var application = $("#app")。html(); 的console.log(" $ {会话"。+应用+"?sideNavOptions [0]}&#34);
有可能吗?
提前致谢
答案 0 :(得分:5)
您正在尝试以无法正常工作的方式将服务器和客户端混合在一起(如我的评论中所述)。这是另一种选择。
创建一个简单的控制器,您可以将ajax请求传递给特定的会话变量。控制器可能看起来像这样
package com.example
import grails.converters.JSON
class MySimpleController {
def gimmieValue() {
String value = session["${param.key}"] as String
render [result: value] as JSON
}
}
该控制器基本上采用一个名为' key'并将返回使用该键存储在会话中的任何内容。生成的JSON对象具有属性'结果'。
下的值使用此控制器的客户端代码可能如下所示:
$.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);
}
}
这是一个非常简单的示例,您应该明白,您实际上是通过此控制器打开整个会话存储。这构成了安全威胁。我建议您锁定哪些键可以在控制器中返回,而不是只允许任何键(如我所示)。
这假设您也在客户端使用jQuery。希望这会有所帮助。