以下是我的服务器代码
/* 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);
});
});
我的Ajax在html页面中调用。
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
。当我尝试控制日志时,它总是打印未定义。任何人都可以帮我解决这个问题吗?谢谢。
答案 0 :(得分:1)
与上面提到的答案一样,你可以使用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呼叫时,事情变得非常简单。
答案 1 :(得分:0)
您的请求正文将在req.body
中如果是json,你可以使用
let bodyParser = require('body-parser');
const app = express();
app.use(bodyParser.json());
router.post('/tone', function(req, res, next) {
console.log("what is the body" + req.body);
tone_analyzer.tone({ text: req.body},
function(err, tone) {
// your code here
}
答案 2 :(得分:0)
您的服务器配置中是否有这个?
app.use(express.bodyParser());
这允许您解析JSON请求。