JSON主体在Node.js应用程序中始终为空

时间:2015-08-17 09:06:55

标签: javascript jquery ajax json node.js

我正在使用Node.js构建一个简单的应用程序。在客户端上,我使用Ajax将一些JSON数据发送到服务器,代码如下:

var data = {};
data.title = "title";
data.message = "message";
$.ajax({
    type: 'POST',
    data: JSON.stringify(data),
    contentType: 'application/json',
    url: '/myresult',
    processData: false,
    success: function (data) {
        console.log('success');
        console.log(JSON.stringify(data));
    }
});

处理此请求的服务器端代码是:

app.post('/myresult', function (req, res) {
    var obj = {};
    console.log('body: ' + JSON.stringify(req.body));
    res.send(req.body);
});

然而,控制台日志将响应bode打印为空,即body: {}

为什么正文值为空,如何用标题和消息填充?

1 个答案:

答案 0 :(得分:1)

Express得到body-parser的帮助。 使用它作为中间件来获取实际的身体内容:

app.use(require('body-parser').urlencoded({extended: true}));

然后保留您的代码:

app.post('/myresult', function(req, res) {
    var obj = {};
    console.log('body: ' + JSON.stringify(req.body));
    res.send(req.body);
});

我希望这对您有用,但请注意bodyParser.json(),这可能更适合您的需求。

此外,目前正在发生的事情是因为你有processData: false,它基本上发送了这个:({"command":"on"}).toString() [object Object]并且你的身体解析器失败了。请尝试完全删除processData标记。