【问题标题】:JSON body always empty in Node.js applicationNode.js 应用程序中的 JSON 正文始终为空
【发布时间】:2015-08-17 09:06:55
【问题描述】:

我正在使用 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);
});

但是控制台日志将响应显示为空,即body: {}

为什么body的值是空的,怎么能用title和message填充呢?

【问题讨论】:

    标签: javascript jquery ajax json node.js


    【解决方案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 标志。

    【讨论】:

    • 谢谢,但我已经将它包含在我的 app.js 文件中。仍然返回正文:{}。
    • @CmdrDoom 检查答案,我更新了最后一部分并添加了一些可能对您有用的内容。
    • 还是没有运气。我可以打印出发送到服务器的请求,但正文部分仍然是空的。
    • 嘿,app.use(bodyParser.json({ extended: true }));有效!
    • 嗯!伟大的。抱歉隐藏了。 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 2014-12-09
    • 2021-02-01
    • 2021-11-27
    • 1970-01-01
    相关资源
    最近更新 更多