req.body.data在nodejs中未定义

时间:2016-03-20 11:12:16

标签: 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('body-parser');

app.use(bodyParser.json());

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

    console.log(req.body.data)

});

但我在console.log(req.body.data)中未定义,任何想法为什么?

2 个答案:

答案 0 :(得分:1)

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

尝试在Content-type调用中将http标头application/json设置为$.post,并将有效的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')
    }
})

答案 1 :(得分:0)

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});

});

希望它有所帮助:)