@Stopy

Как в nodejs возвращать ответ на AJAX запрос?

Вот в php все понятно, на запрос просто отдаем что-либо через 'echo'
А как в nodejs? res.end() ?
Но такой код не работает
Клиент:
$.post('/get_comments', {id: parseInt($(this).parent().attr('data-id')), function(data){
        console.log(data);
 }});

Сервер:
var ShowComments_Model = require('../models/ShowComments_Model.js');

module.exports = function (req, res, db, next) {
    res.json({data: 12});
}


Код принимающий запросы:
var ShowComments_Controller = require('./controllers/ShowComments_Controller.js');
app.post('/get_comments', function(req,res,next) {
	ShowComments_Controller(req, res, db, next);
});

Так же на сервере пытался отдавать и строку и отрендеренную часть шаблона res.render('some', {data: data});
Что я делаю не так?
  • Вопрос задан
  • 2651 просмотр
Решения вопроса 1
mr_T
@mr_T
Web-разработчик
Во-первых, в jQuery есть функция data и можно (и даже нужно) сократить код до $(this).parent().data('id').
Во-вторых, урлом /get_comments?jsoncallback=? явно что-то не так, а именно второй знак вопроса.
В-третьих, со слов документации по res.end() для Express:
Use to quickly end the response without any data. If you need to respond with data, instead use methods such as res.send() and res.json().

Хотя там и есть опциональный параметр data, лучше все равно написать res.json({data: 12}); хотя бы потому, что такая запись короче и веселее.
Исходя из того, что есть в вопросе, о других ошибках сказать нельзя, поэтому если не поможет, то покажи еще код вызова express (банально, но вдруг ты, например, вызываешь express.get, хотя запрос идет post?)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы