我的节点后端服务器中有这个代码:
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
这就是api,即我想打电话:
router.post('/update/:_id', function(req, res, next) {
console.log("req.body:" + req.body);
}
这是我通过角度1发布的帖子请求:
var data = {something: "something"}
var url = 'http://localhost:8081/update/5982168b399ccf32ad75ce2e';
$http({
withCredentials: false,
method: 'POST',
url: url,
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: data
})
.then(function (response) {
if (response.data) {
console.log("Post Data Submitted Successfully!");
}
}, function (response) {
console.log("Error status: " + response.status)
});
我正在使用Angular 1.6.1版本。
我已经尝试了所有内容,并查看了无数的帖子,但没有人帮助我。我可以看到身体经历。但是我在节点端后端得到了未定义的req.body
。
任何帮助都将不胜感激。
感谢。
答案 0 :(得分:3)
可能是
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
您的数据是JSON格式,而不是x-www-form-urlencoded
{something: "something"}
你可以试试这个
headers: {'Content-Type': 'application/json'}
默认情况下,您在$ http POST中发送JSON数据,因此您可能不需要标头 把它拿出去尝试
=============================================== ================
另外,您的数据可能不是有效格式
JS不知道什么是东西,它不是变量吧?
你必须把它变成一个字符串,即使它是{ "key": "value" }
对的密钥
你可以尝试这个,如果上面没有工作
{
"something": "something"
}
验证您的JSON https://jsonlint.com/
答案 1 :(得分:0)
您需要对数据进行字符串化,并按原样更改内容类型:
var data = {something: "something"}
var url = 'http://localhost:8081/update/5982168b399ccf32ad75ce2e';
$http({
withCredentials: false,
method: 'POST',
url: url,
headers: {'Content-Type': 'application/json'},
data: JSON.stringify(data)
})
此外,您还应该确保可以使用Postman对该URL进行POST,并且收到正文以解决服务器中的问题。另外,请考虑使用Angular Resource。