2013-06-11 1 views
0

У меня есть приложение Node.js, которое, среди прочего, отвечает на запрос AJAX (jQuery) $.get() с веб-страницы, отправив некоторый HTML обратно на эту страницу. Приложение использует Express.Как, в Node.js, отвечать на запрос GET от клиента (отправить HTML-сообщение в ответ)?

Таким образом, в коде сервера, у меня есть:

app.get('/friends', api.friends);, где api определяется как api = require('./static/routes/api') и я установка app.use(app.router);.

В моем api.js модуле, у меня есть api.friends код: У меня есть

exports.friends = function(request, response) { ...lots of code... };

, где я создаю некоторые конкретные HTML.

Теперь, мой вопрос: как я действительно отправлю этот HTML-код клиенту? Я не могу использовать переданный объект response, потому что это уже не объект типа response типа Express, поэтому обычные методы reponse.send(), .end() и т. Д. Не существуют.

Я понятия не имею, что делать, отражая недостаток понимания узла и его внутренних компонентов (это мое первое приложение Node), поэтому любая помощь будет приветствоваться и приветствоваться. Спасибо.

+2

Почему 'response' больше не является объектом Express? – Daniel

ответ

1

Как заявил @Daniel в своем комментарии, то response объект, безусловно, является экспресс-объект, и вы можете вернуть HTML просто rendering представления, например, так:

exports.friends = function(request, response) { 
    //do stuff 
    response.render('friends.html'); 
}; 

Конечно, вам придется определите свои взгляды в настройке app.js примерно с

app.set('views', __dirname + '/views') 
+0

Ну, вот что я тоже подумал. Когда я запускаю свое приложение, появляется ошибка: '** .../static/routes/api.js: 29 response.render (table); **' '** TypeError: Object # не имеет метод 'Render' ** на Request.exports.friends [в _callback] на Request.init.self.callback в Request.EventEmitter.emit на Request.onResponseat Request.EventEmitter.emit в IncomingMessage. Request.onResponse.buffer на IncomingMessage.EventEmitter.emit на IncomingMessage._emitEnd на HTTPParser.parserOnMessageComplete [as onMessageComplete] at CleartextStream.socketOnData' – Lew

0

Ugh! Я такой идиот! В моем обработчике exports.friends выйдет request, который, как часть его вызывающих параметров, принимает функцию вида function(error, response, body). Обратите внимание на параметр . Я отправил результаты в пределах этой функции, которая, конечно же, использовала этот объект response, а не тот, который прошел через exports.friends(request, response). Doh. Хорошо, спасибо вам, в любом случае, вы заставили меня снова взглянуть на код и с пониманием того, что объект response является законным, я смог увидеть ошибку. Еще раз спасибо - ценим!

+0

добро пожаловать. Возможно, было бы неплохо отредактировать ваш вопрос с некоторыми из вашего кода в export.friend, в качестве ссылки для будущих посетителей вопроса. – verybadalloc

+0

Да, хорошая идея. Я сделаю это. – Lew

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