我的客户端
$.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)中未定义,任何想法为什么?
答案 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});
});
希望它有所帮助:)