我刚刚开始学习MEAN堆栈,请原谅我,如果这看起来像一个非常愚蠢的问题。我的问题如下:
在客户端(controller.js)我有,
$http({
method : 'POST',
url : '/root',
// set the headers so angular passing info as form data (not request payload)
headers : { 'Content-Type': 'application/x-www-form-urlencoded' },
data : {
type:'root',
username:$scope.rEmail,
password:$scope.rPassword
}
})
在我的服务器端,
app.post('/root', function(req, res) {
console.log(req.body);
console.log(req.body.username);
});
我的控制台日志显示:
17 Nov 21:39:04 - [nodemon] starting `node server/server.js`
{ '{"type":"root","username":"testUserName","password":"testPassword"}': '' }
undefined
我会想象req.body.username给我testUserName但是我得到了未定义。我得到的JSON格式有点奇怪。任何人都可以帮我解决这个问题吗?我做了一些阅读并尝试使用body-parser并通过了角度js $ http.post文档,但没有找到任何可以帮助我的东西。
我想问题出在:
{ '{"type":"root","username":"testUserName","password":"testPassword"}': '' }
但我似乎无法弄清楚如何从我的角度控制器中的$ http.post传递数据,以便我只能以标识符:值格式获取我的请求。
答案 0 :(得分:2)
没关系,我明白了。好像我需要打破编码。
headers : { 'Content-Type': 'application/x-www-form-urlencoded' }
到
headers : { 'Content-Type': 'application/json' }
修复了问题。
答案 1 :(得分:1)
请尝试以下源代码:
$http({
method : 'POST',
url : '/root',
// set the headers so angular passing info as form data (not request payload)
headers : { 'Content-Type': 'application/x-www-form-urlencoded' },
data : {
type:'root',
username:$scope.rEmail,
password:$scope.rPassword
},
transformRequest: function(obj) {
var str = [];
for(var p in obj){
str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));
}
return str.join('&');
}
})
答案 2 :(得分:0)
$http({
method : 'POST',
url : '/root',
// set the headers so angular passing info as form data (not request payload)
headers : { 'Content-Type': 'application/x-www-form-urlencoded' },
params : {
type:'root',
username:$scope.rEmail,
password:$scope.rPassword
}
})
尝试使用' params',也许它不会工作但是尝试一下:P
答案 3 :(得分:0)
我已尝试过" params"而不是"数据"并且工作正常,如果标题是" application / x-www-form-urlencoded"则无关紧要。或" application / json" 但是使用" application / json"与节点上的request.query.param1一起使用。