【问题标题】:How to pass data from AngularJS frontend to Nodejs backend?如何将数据从 AngularJS 前端传递到 Nodejs 后端?
【发布时间】:2016-06-12 11:09:52
【问题描述】:

我这里有一些 Angular 的 js 代码。

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

  <head>
    <script src="Scripts/angular.min.js"></script>
        <body>    
      <div ng-app="">
        <form>
          Author:
          <input type="text" ng-model="author">
          <br>
          <br> Title:
          <input type="text" ng-model="title">
          <br>
          <br> Body:
          <input type="author" ng-model="body">
          <br>
          <br>
          <input type="submit" value="Submit">
        </form>
      </div>
    </head>
    </body>
</html>

这里还有带有 MySQL 代码的 node js。我能够从此节点代码将数据传递到 MySQL DB。如何继续 Angular 到节点 js?我来自 PHP 背景。我应该能够将数据从 Angular js 表单发送到 MySQL 数据库。我可以从这里的节点代码向 MySQL 数据库发送数据。

var mysql = require('mysql');

var connection = mysql.createConnection({
  host: 'localhost',
  user: '',
  password: '',
  database: 'copedb'
});
connection.connect();
var cope = {
  author: 'XYZXYZ',
  title: 'Testing Node',
  body: 'Node JS'
};
var query = connection.query('insert into cope set ?', cope, function(err, result) {
  if (err) {
    console.error(err);
    return;
  }
  console.error(result);
});

【问题讨论】:

标签: javascript html angularjs node.js


【解决方案1】:

无论如何我已经在这里写了实际的工作代码。

index.html

 <!DOCTYPE html>
 <html lang="en">
 <head>
 <script src="angular.min.js"></script>
 <script src="app.js"></script>
 </head>
 <body ng-app="myApp">
 <div ng-controller="myCtrl">
 <form>
    Author:
    <input type="text" ng-model="data.author">
    <br>
    <br> Title:
    <input type="text" ng-model="data.title">
    <br>
    <br> Body:
    <input type="author" ng-model="data.body">
    <br>
    <br>
    <input type="submit" value="Submit" ng-click="submit()">
  </form>
  </div>
  </body>
  </html>

app.js

 var app = angular.module('myApp', []);
 app.controller('myCtrl', function($scope,$http) {
 $scope.data = {};
$scope.submit= function(){
    console.log('clicked submit');
    $http({
        url: 'http://localhost:8080/blah',
        method: 'POST',
        data: $scope.data
    }).then(function (httpResponse) {
        console.log('response:', httpResponse);
    })
   }
 });

server.js

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

    app.use(bodyParser.json({limit: '50mb'}));
    app.use(express.static('public'));

  var connection = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: '',
  database: 'copedb'
   });
   connection.connect();

    app.post('/blah', function(req, res, next) {
    var cope = req.body;
    console.log('request received:', req.body);
   var query = connection.query('insert into cope set ?', cope, function (err,     result) {
    if (err) {
        console.error(err);
        return res.send(err);
    } else {
        return res.send('Ok');
    }
    });
    //res.send('received the data.');
    });
    app.listen(8080);

【讨论】:

    【解决方案2】:

    它可以成为您入门的垫脚石:

    索引.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
       <script src="Scripts/angular.min.js"></script>
       <script src="Scripts/app.js"></script>
    </head>
    <body ng-app="myApp">    
      <div ng-controller="myCtrl">
        <form>
          Author:
          <input type="text" ng-model="author">
          <br>
          <br> Title:
          <input type="text" ng-model="title">
          <br>
          <br> Body:
          <input type="author" ng-model="body">
          <br>
          <br>
          <input type="submit" value="Submit" ng-click="submit()">
        </form>
      </div>
    </body>
    

    Angular 代码 app.js

    var app = angular.module('myApp', []);
    app.controller('myCtrl', function($scope) {
       $scope.submit= function(){
          var data = $.param({
            book: JSON.stringify({
                author: $scope.author,
                title : $scope.title,
                body : $scope.body
            })
          });
    
          $http.post("/api/book/", data).success(function(data, status) {
            console.log('Data posted successfully');
          })
       }
    });
    

    server.js - Nodejs

    var express = require('express'); 
    var mysql = require('mysql');
    var app = express();
    
    var connection = mysql.createConnection({
         host: 'localhost',
         user: '',
         password: '',
         database: 'copedb'
    });
    connection.connect();
    
    app.post('/api/book', function(req, res, next){
       var cope = req.body.params;
       var query = connection.query('insert into cope set ?', cope, function(err, result) {
         if (err) {
           console.error(err);
           return res.send(err);
         } else {
           return res.send('Ok');
         }
    });
    app.listen(8080);
    

    【讨论】:

    • 谢谢。我的 sever.js 用红色下划线。我有放 server.js 文件的任何特定位置吗?我正在将 webstorm 与 nodejs express 项目一起使用。
    • server.js 是你程序的入口文件。我不知道 Webstorm。
    • mysql下划线-module未列出package.json
    • 已修复 - ALT+Enter - 添加依赖项。
    • 此代码是基本代码。我什至没有测试它。从中学习是件好事。从这个免费课程中学习 angularjs。 codeschool.com/courses/shaping-up-with-angular-js
    【解决方案3】:

    如何将数据从 AngularJS 前端传递到 Nodejs 后端的最简单答案

    带有 html 的 AngularJs 代码

     <body>
     <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
        <div ng-app="app" ng-controller="myCtrl">
            <p>First Name: <input type="text" name="firstName" ng-model="firstName" required /></p>
            <p>Lirst Name: <input type="text" name="lastName" ng-model="lastName" required /></p>
            <button ng-click="SendData()">Submit</button>
            <hr />
            {{ PostDataResponse }}
        </div>
        <script>
            var app = angular.module("app",[]);
            app.controller("myCtrl", function($scope,$http){
            $scope.SendData = function() {
                var data = {
                        fName : $scope.firstName,lName : $scope.lastName
                    }
                $http.post('/postFormAngular', data)
                    .success(function (data, status, headers, config) {
                        $scope.PostDataResponse = data;
                    })
                    .error(function(data, status, header, config){
                        $scope.PostDataResponse = "Data: " + status;
    
    
                    });
            };  
            });
        </script>
     </body>
    

    Nodejs 代码

    var express = require('express');
    var multer  =   require('multer');
    var mime    =   require('mime');
    var mysql = require('mysql');
    var app = express();
    var bodyParser =    require("body-parser");
    app.use(bodyParser.urlencoded({ extended: true }));
    app.use(bodyParser.json());
    
    var connection = mysql.createConnection({
      host     : 'localhost',
      user     : 'root',
      port      : 3306,
      password : '',
      database : 'angular_db'
    });
    
    connection.connect(function(err){
    if(!err) {
        console.log("Database is connected ... nn");    
    } else {
        console.log("Error connecting database ... nn");    
    }
    });
    
    app.get('/angular_html.html', function(req, res){
        res.sendFile(__dirname + '/' + 'angular_html.html');
        console.log("----------------");
    });
    app.post("/postFormAngular", function (req, res) {
            console.log(req.body.fName);
            res.send(req.body.fName);
    });
    app.listen(3000);
    

    【讨论】:

      【解决方案4】:

      首先,根据您的需要,使用 npm 模块的 Express/Restify 创建一个 RESTful 服务,然后再与您的 SQL 数据库对话。

      一旦服务在服务器级别启动并运行,您现在就可以在客户端级别向服务器发送/接收数据了。

      注意:使用 $resource 代替 AngularJS 的 $http 服务与服务器通信。

      https://docs.angularjs.org/api/ngResource/service/$resource

      【讨论】:

        猜你喜欢
        • 2016-12-29
        • 2020-07-08
        • 2012-11-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-12-18
        相关资源
        最近更新 更多