Javascript nodejs中未定义req.body.data

Javascript nodejs中未定义req.body.data,javascript,node.js,express,Javascript,Node.js,Express,我的客户方 $.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('b

我的客户方

$.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)中没有定义,知道为什么吗

console.log(req.body.data)
返回未定义,因为数据在
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});

});

希望有帮助:)

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

尝试在
$中将http头
内容类型
设置为
应用程序/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')
    }
})

谁否决了这个?至少给出一个理由