将angularjs表单发送到nodejs Express(错误请求)

将angularjs表单发送到nodejs Express(错误请求),angularjs,node.js,post,express,request,Angularjs,Node.js,Post,Express,Request,我是angularJs的新手,我试图用angularJs和nodejs(服务器端)进行基本登录,我现在不关心安全性,我只是想学习如何发布。因此,我制作了一个登录表单和一个控制器,其中包含: 我的登入表格: <div class="col-md-4"> <h1>Login</h2> <form class="form" > <div class="form-group"> <

我是angularJs的新手,我试图用angularJs和nodejs(服务器端)进行基本登录,我现在不关心安全性,我只是想学习如何发布。因此,我制作了一个登录表单和一个控制器,其中包含:

我的登入表格:

<div class="col-md-4">
      <h1>Login</h2>
      <form class="form" >
        <div class="form-group">
          <label>Username</label>
          <input type="email" class="form-control"   ng-model="login.mail" required>
        </div>
        <div class="form-group">
          <label>Password</label>
            <input type="password" class="form-control"    ng-model="login.password" required>
          </div>
          <div>
            <button type="text" class="btn btn-default" ng-click="login()">Login</button>
          </div>
      </form>
    </div>
服务器端我有:

router.post('/login/', function(req, res) {

// here "/login/" means  "/users/login" ( in index of controllers)

    console.log(req.body.mail);

var usermail = req.body.mail;
var pass = req.body.password;
console.log(usermail + pass);



User.find({mail: usermail}, function(err, user) {
        if (err) {
            res.send(err);
            console.log("ça marche pas")


        } else {

            res.json( user );
            console.log(user);
        }
    })


});
服务器端:它可以工作(当我使用DHC chrome扩展发布时),但当我使用angularjs视图时,我得到了错误:

POST 400(错误请求)


请帮我解决这个问题,我想我错过了什么。提前谢谢。

我想您正在发送登录功能,如下所示:

$http.post('/api/users/login', $scope.login)
您可能希望在登录函数中传递一个参数,该参数可以发送到服务器,如下所示:

$scope.login = function(loginData) {

    $http.post('/api/users/login', loginData).success(function (response)
更新

您正在将表单值分配给$scope.login。如果要为其创建单独的变量,例如loginForm,则可以将其作为有效的JSON发送到API:

<div class="col-md-4">
  <h1>Login</h2>
  <form class="form" >
    <div class="form-group">
      <label>Username</label>
      <input type="email" class="form-control"   ng-model="loginForm.mail" required>
    </div>
    <div class="form-group">
      <label>Password</label>
        <input type="password" class="form-control"    ng-model="loginData.password" required>
      </div>
      <div>
        <button type="text" class="btn btn-default" ng-click="login(loginData)">Login</button>
      </div>
  </form>
</div>

我只想发送到我的服务器的电子邮件和登录表单中的密码,我确定我的控制器不工作:现在我尝试使用你的表达式,它给我一个404错误,我忘了告诉你,在我收到错误的请求400之前,在服务器端:无效JSONY你必须自己调试发送到服务器的内容。如果您使用浏览器开发工具(F12)。您可以查看发送到API的内容。然后,您可以检查您发送的JSON是否有效(在这个网站上,例如:)。我已经更新了我的答案,其中显示了如何改进代码。您有一个函数$scope.login,您可以将变量分配给它。谢谢,它工作得很好:),非常感谢我的同事(我们也是),现在我明白我的错误了。致以最诚挚的问候谢谢对不起,我无法回答我的问题来告诉你谢谢,所以我在这里做
<div class="col-md-4">
  <h1>Login</h2>
  <form class="form" >
    <div class="form-group">
      <label>Username</label>
      <input type="email" class="form-control"   ng-model="loginForm.mail" required>
    </div>
    <div class="form-group">
      <label>Password</label>
        <input type="password" class="form-control"    ng-model="loginData.password" required>
      </div>
      <div>
        <button type="text" class="btn btn-default" ng-click="login(loginData)">Login</button>
      </div>
  </form>
</div>
.controller('loginCtrl', ['$scope', '$http', function ($scope, $http) {
        $scope.loginForm = {
           mail: '',
           password: ''
        };

        $scope.login = function(loginData) {
            // Check what this prints out:
            console.log(loginData);
            $http.post('/api/users/login', loginData).success(function (response) {
                console.log(response);
//                refresh();
            });
        };

}]);