2012-03-28 3 views
3

На моем сервере Node.js У меня есть следующий код:Передача переменной из Node.js сервера к клиенту

//Generate a token 
var token = capability.generateToken(); 

//Serve the page 
var html = fs.readFileSync('learn.htm').toString(); 
response.writeHead(200, {"Content-Type": "text/html"}); 
response.end(html); 
} 

Теперь на стороне клиента (в learn.htm) Я хочу, чтобы получить доступ к переменной токенов. Мой вопрос: как передать переменную клиенту в ответе? Должен быть простой способ сделать это, но я изо всех сил пытаюсь обвести вокруг себя голову.

ответ

1

Вы можете отправить JavaScript клиенту, который устанавливает переменную. Или вы можете сохранить его в атрибуте data-, например. тега body (<body data-token="...">), а затем получить доступ к нему через $('body').data('token'), если у вас есть jQuery на стороне клиента.

Если вам это нужно для формы, вы также можете сохранить его в скрытом поле ввода.

+0

Как добавить атрибут данных в тег body? На клиенте я бы использовал jquery, но я не уверен, как это сделать с сервера. – hughesdan

+0

Вам нужно использовать какой-то механизм шаблонов; прямо сейчас вы читаете только статический файл без надлежащего способа заменить значения внутри него. – ThiefMaster

+0

ОК. Я пытался удержаться от изучения механизма шаблонов, пока не стал лучше разбираться в узле. Возможно, это всего лишь один из тех случаев, когда механизм шаблонов абсолютно необходим. – hughesdan

0

Put что-то вроде:

<input type="hidden" value="{{TOKEN}}"> 

в вашем HTML, а затем заменить {{}} лексема строку с маркером в каждом запросе.

Затем с помощью JS, как:

var token = $("input#csrf_token").val(); 

, чтобы получить значение в клиентском сценарии.

Редактировать: Я не использовал его сам, но nowjs (http://nowjs.com/) - это более общий способ получения переменных вашего сервера клиенту. Вероятно, это не то, что вы хотите, чтобы передать простой токен, но это может быть интересно.

+0

Спасибо. Ваш ответ тоже работает. +1 для наконечника nowjs. Я проверю это. – hughesdan

2

Вы должны изучить язык шаблонов для своего HTML. Есть несколько доступных, просто для поиска языка Node.js шаблона или с помощью НОГО:

npm search templates 

Edit: Некоторых популярных из них jade, ejs, hogan.js.

+0

[{{Mustache}} Templating] (http://mustache.github.com/) - самый простой и интуитивно понятный для начинающих ИМО –

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