我正在创建一个包含Nodejs / Sequelize和AngularJs的电子商务网站。
我实际上得到了这个启动器AngularJS starter。
在我的项目中,我有2个文件夹:
我想注册一个用户,我得到了我的" registeredView.html"表格形式:
<form ng-submit="submit()">
<input type="text" name=firstname ng-model="user.firstname" placeholder="firstname" required=" ">
<input type="text" name="lastname" ng-model="user.lastname" placeholder="lastname" required=" ">
<input type="email" name="email" ng-model="user.email" placeholder="Email Address" required=" ">
<input type="password" name="password" ng-model="user.password" placeholder="Password" required=" ">
<input type="password" name="confirm_password" ng-model="user.confirm_password" placeholder="Password Confirmation" required=" ">
<input type="submit" value="Register">
</form>
现在,我可以在我的&#34; RegisteredController&#34;中获取这些数据。感谢$ scope.user,但我不知道如何将这些数据发送到我的服务器。
我正在使用快递模块,所以我尝试使用$ http.post这样:
.controller('RegisteredController', ['$scope', function ($scope, $http) {
$scope.submit = function () {
$http.post('/registered', $scope.user)
then(function (response) {
console.log("posted")
}).catch(function (response) {
console.error(response)
})
}
}]);
在我的&#34; server.js&#34;我试着这样写这个帖子:
app.get('/registered', function (req, res) {
console.log(req.body)
res.end();
});
但它不起作用..
我错了什么?一些忠告 ? 我需要你帮助的人:)
答案 0 :(得分:1)
正如评论中所讨论的,有3个直接明显的问题:
您的服务器需要get
而不是post
,将app.get('/registered'...)
更改为app.post('/registered'...)
。
您在此处错过了一个点:$http.post('/registered', $scope.user)then(function (response) {
,在结束)
和then
之间。
您需要标记要注入的$http
,与$scope
一样 - 将['$scope', function ($scope, $http)
更改为['$scope', '$http', function ($scope, $http)
。
为了能够对您发布的数据执行某些操作,您应该查看body parser。在要求之后,您可以执行以下操作 - app.use(bodyParser.json())
。然后你应该有权访问req.body
,其中应包含被解析为javascript对象的用户。