我正在使用 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: {}
。
为什么body值是空的,如何用标题和消息填充它?
最佳答案
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
标志。
关于javascript - Node.js 应用程序中的 JSON 正文始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32046499/