【问题标题】:req.body.data got undefined in nodejsreq.body.data 在 nodejs 中未定义
【发布时间】:2016-03-20 11:12:15
【问题描述】:

我的客户端

$.post("http://localhost:3000/scrape",
      {
      data: 'something'
      },
      function(data, status){
      console.log(data);
      });

我在 node.js 中做什么

var express = require('express');

var app = express();

var bodyParser = require('body-parser');

app.use(bodyParser.json());

app.post('/scrape', function (req, res) {

    console.log(req.body.data)

});

但是我在 console.log(req.body.data) 中没有定义,知道为什么吗?

【问题讨论】:

  • 谁反对这个?至少给个理由

标签: javascript node.js express


【解决方案1】:

您的数据必须是 json 格式。因为您使用的是bodyParser.json()

尝试在$.post 调用中将http 标头Content-type 设置为application/json,并将有效的json 结构作为数据发送

  $.ajax({
    url: "scrape", 
    type: "POST",
    data: JSON.stringify({ someData : "someData}),
    contentType:"application/json; charset=utf-8",
    dataType:"json",
    success: function(data){
          console.log(data)
    },
    error: function(){
          console.log('error in sending request')
    }
})

【讨论】:

    【解决方案2】:
    console.log(req.body.data)
    

    返回 undefined 因为数据在req.body 你应该console.log(req.body) 并添加app.use(bodyParser.urlencoded({extended: false}));,这样非json格式的数据也能被解析。

    如果你想要req.body.data 有数据,那么就提出请求

    $.post("http://localhost:3000/scrape",
          {
          data: {data: 'something'}
          },
          function(data, status){
          console.log(data);
          });
    

    你的请求也没有发送任何你需要做的响应

    app.post('/scrape', function (req, res) {
    
        console.log(req.body.data)
        res.status(200).json({data: reqr.body.data});
    
    });
    

    希望对你有帮助:)

    【讨论】:

      猜你喜欢
      • 2019-04-03
      • 2021-04-30
      • 1970-01-01
      • 1970-01-01
      • 2019-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多