AngularJS:无法从$ http.post()接收数据

时间:2017-03-12 15:23:36

标签: javascript angularjs node.js express

我能够:

  • 使用HTML格式的文本框发送文本数据到Controller ng-model和ng-submit指令。
  • 将此数据从控制器发送到服务。

问题:   - 从服务,我无法访问Server.js文件中的数据和    因此,我无法将数据插入MySQL表。

我的AngularJS服务使用内置的angularJS $ http服务来发布数据。

我刚刚开始学习AngularJS,并遇到了这个问题。

我在适当的地方评论过以方便。

HTML表单代码:

<form class="form-horizontal"  ng-submit="submit()">

            <label class="control-label col-sm-2" for="id">ID:</label>
            <input type="text" class="form-control" id="id" placeholder="Enter ID" ng-model="text1">

            <label class="control-label col-sm-2" for="title">Title:</label>
            <input type="text" class="form-control" id="title" placeholder="Enter Title" ng-model="text2">

控制器代码:

    (function() {
        var newArticleController = function ($scope, customersService, appSettings) {   
                $scope.list = []; // will pass this list
 //init function: customerService is a Service

                function init() {
                    customersService.postArticle($scope.list)
                        .success(function() {
                                console.log('post promise success!') //This is not printing!!!!!
                        })
                        .error(function(data, status, headers, config) {
                        })
                    }
    //on submit: init() is called
                $scope.submit = function() {
                    if ($scope.text1 && $scope.text2) {
                        $scope.list.push(this.text1)
                        $scope.list.push(this.text2)
                        init()
                        } } };

        angular.module('customersApp')
          .controller('newArticleController', newArticleController);
    }());

AngularJS 服务代码:

(function(){ 
    var customersService = function($http) {
        this.postArticle = function(dataRcvd) {
            console.log('service called');
            console.log(dataRcvd); //This is printing

            return $http.post('/newArticle', JSON.stringify(dataRcvd))
        }

    }
    angular.module('customersApp').service('customersService', customersService);
}())

Server.js (问题来自此部分)

 var express = require('express'),
 var app = express();

    var knex = require('knex')({
        //...
    });
    app.use(express.static(__dirname + '/'));

    app.post('/newArticle', function(req, res) {
            console.log('reached here: server.js')  //This is printing 

            ---> **//HOW TO ACCESS 'dataRcvd' here ???**    
    })

我是新手,所以如果需要任何修改,请帮助我。

2 个答案:

答案 0 :(得分:0)

尝试更新您的代码,如下所示。

步骤1-首先添加“body-parser”。

struct node name = {0};

步骤2-并将中间件包含为

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

步骤3-尝试按如下方式访问数据。

app.use(bodyParser.json()); // for parsing application/json
app.use(bodyParser.urlencoded({ extended: true })); // for parsing application/x-www-form-urlencoded

因此,要在角端解决承诺,请按以下步骤更新您的服务代码。

app.post('/newArticle', function(req, res) {
        console.log('reached here: server.js')  //This is printing 

        ---> **//HOW TO ACCESS 'dataRcvd' here ???**  
          console.log(req.body);

          res.end();    
})

答案 1 :(得分:0)

将body-parser添加到server.js

var express = require('express'),
var app = express();

**var bodyParser = require('body-parser');
app.use(bodyParser.json()); // for parsing application/json**

然后你可以使用

req.body

访问数据。