以下是我的服务器代码
/* GET tone. */
router.post('/tone', function(req, res, next) {
console.log("what is the body" + req.body.data);
tone_analyzer.tone({ text: req.body.data }, function(err, tone) {
console.log(req.body.data);
if (err) {
console.log(err);
} else {
res.send(JSON.stringify(tone, null, 2));
}
console.log(req);
});
});
html页面中我的Ajax的呼叫。
function toneAnalysis(info){
$.ajax({
url: 'http://localhost:3000/tone',
type: 'POST',
data: info,
success: function(res) {
console.log("testing " + info);
},
error: function(xhr, status, errorThrown) {
console.log(status);
}
})
服务器无法检索
req.body.data
。当我尝试控制台日志时,它始终打印未定义。有人可以帮我这个忙吗?谢谢。更新:
The printed req.body after I used body parser
最佳答案
像上面提到的答案一样,您可以使用BodyParser,并且可以使用npm下载并安装它,如下所示:
# npm install bodyparser --save
然后返回到$ .ajax调用,您正在发送数据对象中表示的一些数据,因此,使用BodyParser,您可以简单地访问已发送的对象,因为BodyParser向req nodejs对象添加了另一个对象,该对象称为body,因此,如果您想使用BodyParser访问所有发送的项目,则可能会像这样:
const app = require('express')();
let bodyParser = require('body-parser');
// add a new middleware to your application with the help of BodyParser
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
//Configure the route
router.post('/tone', (req, res, next) => {
console.log("what is the body" + req.body.data);
tone_analyzer.tone({ text: req.body.data}, (err, tone) => {
console.log(req.body.data);
if (err){
console.log(err);
}
else{
res.send(JSON.stringify(tone, null, 2));
}
console.log(req);
});
});
现在使用BodyParser,当您处理XHR或HTTP调用时,事情变得非常简单。
关于javascript - node.js服务器如何访问ajax请求的数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37547453/