以下是我的服务器代码

/* 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/

10-12 15:30