我正在使用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: {}
。
为什么正文值为空,如何用标题和消息填充?
答案 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
标记。