如何将表单数据从控制器发送到连接文件

时间:2015-11-20 10:23:15

标签: javascript angularjs node.js express

我正在尝试使用Angularjs和node.js设计登录页面,并且有错误将数据从控制器发送到我的数据库连接文件,我将在其中执行数据库事务。

错误是POST http://localhost:63342/logindata 404(未找到) 在描述中它指向行$http.post('/logindata', $scope.user);

enter image description here

这是我的代码

的login.html

<!DOCTYPE html>
<html lang="en-US">

<head>
    <script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
</head>
<body>

<div ng-app="" ng-controller="LoginControl">

    User Name : <input type="text" ng-model="user.username">
    Password : <input type="password" ng-model="user.password">
    <br>
    <button ng-click='authentication()'>Submit</button>
</div>

<script src="myLoginController.js"></script>

</body>
</html>

</body>
</html>

myLoginController.js

function LoginControl($scope, $http){
    console.log("Hello...");

    $scope.authentication = function() {
       console.log($scope.user);

        $http.post('/logindata', $scope.user);
    };

}

connection.js

 var express = require('express');
 var bodyParser = require('body-parser');
 var app = express();

 app.use(express.static(__dirname + "/public/angular"));   
 app.use(bodyParser.json());

 app.post('/logindata', function (request,response) {
     console.log("received data");
     console.log(request.body);
 });

 app.listen(3000);
 console.log('Server running on 3000');

任何人都可以建议我如何解决这个问题? 谢谢

2 个答案:

答案 0 :(得分:0)

服务器在端口3000上运行,您的请求是端口63342.这就是问题所在。代码本身很好。

您应该在http://localhost:3000而不是其他端口打开您的网站。

答案 1 :(得分:0)

为了使其在您的开发环境中运行,您可以执行以下操作:

  1. 将控制器中的帖子网址更改为http://localhost:3000/logindata
  2. 如果您使用的是Chrome,请添加扩展程序 - Allow-Control-Allow-Origin并启用它。
  3. 您的代码现在应该可以使用。

    您正在尝试执行跨源资源共享(CORS),默认情况下浏览器不允许这样做。 Chrome扩展程序可通过向请求添加必需的标头来实现。