Я пытаюсь получить доступ к переменной сеанса из jquery динамически.
Это работает console.log("$ {session.application?.SideNavOptions [0]}");
Но мне нужно сделать что-то подобное.
var application = $ ("# app"). html(); console.log( "$ {сеанса." + приложение + "?. sideNavOptions [0]}");
Является ли это возможным?
заранее спасибо
Вы пытаетесь смешивать сервер и клиент здесь таким образом, который не будет работать (как указано в моих комментариях). Вот альтернатива.
Создайте простой контроллер, с помощью которого вы можете передавать запросы ajax для определенных переменных сеанса. Контроллер может выглядеть примерно так:
package com.example
import grails.converters.JSON
class MySimpleController {
def gimmieValue() {
String value = session["${param.key}"] as String
render [result: value] as JSON
}
}
Этот контроллер в основном принимает один параметр под названием "ключ" и возвращает все, что хранится в сеансе с этим ключом. Полученный объект 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 на стороне клиента. Надеюсь это поможет.