2014-10-04 1 views
0

Я хочу получить значение из переменной, отправленной с маршрута NodeJS, в представление. Я знаю, что способ получить это значение на HTML (Джейд) является:Получить значение в JS, отправленном по маршруту NodeJS

#{name_var} 

Но я хочу, чтобы получить это значение в JS (JQuery), и единственный способ, которым я могу думать, является DOM (например, : создать div с этим значением, чтобы оно было скрыто, а затем получить значение getElementById).

Но я думаю, что это данные, которые я посылаю к ракурсу Delicated, это может быть есть большая проблема безопасности ...

Что вы думаете? Есть ли для этого другая «альтернатива»? Спасибо.

ответ

2

Я думаю, вы не захотите пройти через трудный способ перенести значение сначала на элемент dom и получить его позже для обработки.

Вы можете напрямую присваивать значения переменной js так же, как в тэгах html.

Как

script(type='text/javascript'). 
    var somevar = "#{serversideValue}"; 

Так что в то время как HTML визуализируется из шаблона нефрита, она будет оказана, как

script(type='text/javascript'). 
    var somevar = "passedValue"; 

Также в соответствии с значением, переданным от маршрутизатора, вы можете выбрать следует ли использовать html-кодирование или нет при назначении значения переменной js, например #{serversideValue} или !{serversideValue}.

Также, если вы передаете полный объект json через переменную маршрутизатора, вы не можете напрямую назначить его, как то, что мы видели выше. Одним из способов является значение JSON.stringify(), когда вы отправляете его с маршрутизатора и используете JSON.parse() в clientide JS, чтобы вернуть исходный объект.

Также вы можете посмотреть this stackoverflow question, чтобы получить представление о сценарии, который мы обсуждали сейчас.

+0

Отлично. Он работает в файле HTML. Вы что-то пропустили: вам нужно добавить точку в конец первой строки. Хочу спросить что-то еще ... Я проверил этот код, чтобы добавить его в JQuery (внутри $ document.ready()), и он не работает, потому что Jquery не получает значение ... просто конвертируйте «# {serversideValue } "в качестве строки. Это не важно, но я хочу знать, возможно ли это. Большое спасибо. – danigonlinea

+0

просто проверьте источник html в браузере, он должен был отобразить это значение или вы говорите, что он все еще приходит как '" # {serversideValue} "' там? JQuery не имеет никакого значения для случая здесь. – mithunsatheesh

Смежные вопросы