Вопрос:

Я не использую Express, но я пытаюсь извлечь POST-данные, а затем отправить JSON в качестве ответа, но безуспешно

json node.js

27 просмотра

1 ответ

27 Репутация автора

Я все еще очень плохо знаком с node.js, поэтому, пожалуйста, потерпите меня.

Я пытаюсь извлечь данные POST, а затем отправил JSON в качестве ответа, но мне кажется, что я не могу извлечь данные из запроса POST, и еще хуже, я не могу найти синтаксис для людей, которые НЕ используют Express для отправить JSON. Мне постоянно говорят, что res.json - это не функция.

РЕДАКТИРОВАТЬ: Я обнаружил проблему для части JSON, я был дамп. Я, наконец, помню, что мне сказали, JSON отправляются как строки.

var http = require('http');
var qs = require("querystring");

server = http.createServer(function (req, res) {
    try {
        var body = "";
        var post = qs.parse("");
        if (req.method == "POST") {
        res.writeHeader(200, {"Content-Type": "application/json"});
        req.on("data", function (data) {
        body += data;
        console.log(data); //It gives something like <Buffer xx xx xx ...>
        if (body.length > 1e6)
            req.connection.destroy();
        });
    req.on("end", function () {
        post = qs.parse(body);
        console.log(post.test); //It gives "undefined"
    });
    res.end(JSON.stringify({ a: 1 }));
    } catch(err) {
        console.dir(err);
        res.writeHeader(200, {"Content-Type": "text/plain"});
        res.end("Hi hi");
    }
});

server.listen(8000);
console.log("http start @8000");

Любая помощь? Заранее спасибо.

Автор: Jenny L. Источник Размещён: 10.04.2017 08:15

Ответы (1)


0 плюса

2595 Репутация автора

Решение

ниже решает дату в строку (т.е. преобразование буфера в строку

res.on('data', function(chunk) {  
    var textChunk = chunk.toString('utf8');  
    // console.log(textChunk); // will give you a stream of text from data
});

Вы можете хранить textChunk вне ondataобработчика, чтобы затем использовать его при необходимости (скажем, возвращая соответствующие данные пользователю обратно)

Автор: Denis Tsoi Размещён: 10.04.2017 08:27
Вопросы из категории :
32x32