node.js服务器如何访问ajax请求的数据?

时间:2016-05-31 13:41:22

标签: javascript ajax node.js

以下是我的服务器代码

/* 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。当我尝试控制日志时,它总是打印未定义。任何人都可以帮我解决这个问题吗?谢谢。

更新: The printed req.body after I used body parser

3 个答案:

答案 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请求。