从grails中的jquery动态获取会话变量

时间:2014-05-05 19:46:15

标签: jquery grails gsp

我试图动态地从jquery访问会话变量。

这很有效 的console.log(" $ {session.application .sideNavOptions [0]}&#34);

但我需要做这样的事情。

var application = $("#app")。html(); 的console.log(" $ {会话"。+应用+"?sideNavOptions [0]}&#34);

有可能吗?

提前致谢

1 个答案:

答案 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。希望这会有所帮助。