Javascript Can';t使用Ionic和Express.js从服务器端的客户端获取数据
这个问题以前可能有人回答过,但我似乎找不到正确的答案。我正在做一个Ionic项目,我用Node.js和express.js创建了另一个项目来处理我所有的http请求。目前这两个都在本地主机上运行。当我试图将一些数据从客户端发送到服务器端时,我从请求中获得的数据在我使用console.log(req.body)时如下所示:Javascript Can';t使用Ionic和Express.js从服务器端的客户端获取数据,javascript,node.js,express,ionic-framework,Javascript,Node.js,Express,Ionic Framework,这个问题以前可能有人回答过,但我似乎找不到正确的答案。我正在做一个Ionic项目,我用Node.js和express.js创建了另一个项目来处理我所有的http请求。目前这两个都在本地主机上运行。当我试图将一些数据从客户端发送到服务器端时,我从请求中获得的数据在我使用console.log(req.body)时如下所示: {{“用户名”:hello@hello.com“}':”'} 我尝试了req.body[username]等等来获取数据,但是它只是没有定义 我处理http请求的控制器如下所示
{{“用户名”:hello@hello.com“}':”'}
我尝试了req.body[username]等等来获取数据,但是它只是没有定义
我处理http请求的控制器如下所示:
$scope.submit = function(){
var username = $scope.username;
console.log($scope.data.username);
$http({
method: 'POST',
url: 'http://localhost:8000/api/users',
data: username,
headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Access-Control-Allow-Origin': '*'}
});
router.post('/users', function (req, res) {
var username = req.body;
var newUser = new User({
username: username
})
newUser.save(function (err) {
if (err) {
return res.send(500, err);
}
return res.json(200, newUser);
});
});
Html元素
<input type="text" ng-model="data.username" name="name">
包括Server.js bodyparser
app.use(bodyParser.json());
app.use(bodyParser.json({ type: 'application/vnd.api+json' }));
app.use(bodyParser.urlencoded({ extended: true }));
对象具有键和值
{ key: value }
正文上的对象以错误的方式发送,因为您发送的对象的键为“{”username”:hello@hello.com“}”的值为“”
我建议您修复如何发布到nodejs/express服务器。但是你可以通过一些技巧来获得价值。像这样
const body = {'{"username":"hello@hello.com"}': '' }
const keys = Object.keys(body);
const parsed = JSON.parse(keys[0]);
console.log(parsed.username);
编辑:所以我在这里做的是获取对象的所有关键点。只有一个键“{”username”:hello@hello.com"}'. 因为那个键是一个字符串,所以我正在解析它以获得一个对象。现在我有了一个目标
{ username: 'hello@hello.com' }
最后我要注销用户名
正确的解决方案是修复如何将数据发送到express服务器
我不太明白你的控制器。你的ng模型是data.username,但是你要
var username = $scope.username
应该是哪一个
var username = $scope.data.username // (that's at least what you're binding to in your view)
此外,您还希望发送带有post的对象,而不仅仅是值
$scope.submit = function(){
var username = $scope.username;
console.log($scope.data.username);
$http({
method: 'POST',
url: 'http://localhost:8000/api/users',
data: { username: username },
headers: {'Content-Type': 'application/x-www-form-urlencoded', 'Access-Control-Allow-Origin': '*'}
});
我不确定express解析器,但我不知道为什么要调用bodyparser两次。第一个就足够了。您能告诉我们控制器中存储了什么用户名吗