2016-08-12 10 views
0

因此,我正试图将一些数据发送给我的nodejs服务器。让我先从我的代码: 的index.html从angular发送数据以表示在不同域上运行的nodejs服务器

<body ng-app="starter"> 
 
     <ion-pane> 
 
     <ion-header-bar class="bar-stable"> 
 
      <h1 class="title">Ionic Blank Starter</h1> 
 
     </ion-header-bar> 
 
     <ion-content> 
 
     </ion-content> 
 
     </ion-pane> 
 
     <div ng-controller="myCtrl"> 
 
      <form> 
 
       <input type="text" ng-model="message"> 
 
       <input type="submit" value="Submit" ng-click="submit()"> 
 
      </form> 
 
     </div> 
 
    </body>

下面是数据的文本框,然后提交按钮会发送消息和设备ID到服务器。

app.js

var app = angular.module('starter', []); 
 
app.controller('myCtrl', function($scope, $http) { 
 
    var devToken; 
 
    var push = new Ionic.Push({ 
 
      "debug": true 
 
     }); 
 
     push.register(function(token) { 
 
      devToken = token; 
 
      console.log("Device token:", token.token); 
 
     }); 
 
    
 
    $scope.submit = function() { 
 
     
 
     var message = "Hello"; 
 
     $http({ 
 
      method: 'POST', 
 
      url: 'http://127.0.0.1:8080', 
 
      token: devToken, 
 
      message: message 
 
      
 
     }) 
 
    } 
 
})

正如你所看到的,我试图抓住一个消息和设备ID,并将其张贴到我的Express服务器。

server.js

var express = require('express'); 
 
var bodyParser = require('body-parser'); 
 
var apns = require('apns'); 
 
var gcm = require('node-gcm'); 
 

 
var app = express(); 
 

 
var sender = new gcm.Sender('AIzaS.........plD2s8'); 
 

 
var registrationTokens = []; 
 
registrationTokens.push('Insert Device ID here that is passed from app.js'); 
 

 
app.use(bodyParser.urlencoded({ extended: false })); 
 
app.use(bodyParser.json()); 
 

 
app.get('/', function(req, res) { 
 
    console.log("DEVICE ID == " + req.body.devToken); 
 
    sender.send("Hello", { registrationTokens: registrationTokens }); 
 
    
 
}) 
 

 
app.listen(8080, function() { 
 
    console.log('running on port 8080'); 
 
});

SO来回顾一下,我需要帮助让我的数据提交到可以用我的表达的NodeJS服务器(在不同的域/端口运行时比amgular应用程序)。任何人都可以帮助我弄清楚如何从角度获取数据以表示nodejs?任何帮助表示赞赏。

感谢

回答

2

你需要创建一个路线捕获后:

app.post('/', function(req, res) { 
    console.log(req.body); 
    ... 
}); 

然后前端可以通过任何你想要的

$http.post("/", {message:message, devToken:devToken}).success(function(message, status) { 
     console.log('Message posted'); 
    }) 

如果后端不上与OP在注释中相同的来源,您需要启用跨源请求。

app.use(function(req, res, next) { 
res.header("Access-Control-Allow-Origin", "*"); 
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
next(); 
}); 

注意:除非真的想允许来自任何地方的请求,否则不要使用*作为生产。

+0

我刚刚编辑,我仍然在本地主机:8080“无法GET /”消息。出了什么问题? –

+0

当您启动应用程序时,您是否在控制台中看到消息“在端口8080上运行”? – mcgraphix

+0

是的,当我运行server.js时, –

相关问题