2016-07-23 10 views
0

は、コンソールに出力「ガットデータ」をnodejs。しかし、Angular2はサーバーにデータを送信しないようです。 Screenshot PostMan角度2サービスHTTP POSTをdoesntの仕事

何が問題なのですか?

NodeJS server.js:

api.post('/updateLocation', function(req, res){ 
    //res.send(req.body); 
    console.log('Got data'); 
}); 

イオン2 home.ts:

import {Component} from '@angular/core'; 
import {NavController} from 'ionic-angular'; 
import {Service} from '../../service'; 

@Component({ 
    templateUrl: 'build/pages/home/home.html', 
    providers: [Service] 
}) 
export class HomePage { 
    constructor(private navCtrl: NavController, service: Service) { 
    setInterval(()=> { 
     service.sendLocation({ x: '46.303344', y: '28.655268' }); 
    }, 1000); 
    } 

} 

service.ts:によって解決

import {Injectable} from '@angular/core'; 
import {Http, Headers} from '@angular/http'; 

@Injectable() 
export class Service { 
    http : any; 
    url : string = 'http://localhost:3000/api/updateLocation'; 
    constructor(http: Http){ 
    this.http = http; 
    } 

    sendLocation(location){ 
    let body = JSON.stringify(location); 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/json'); 
    return this.http.post(this.url, body, { headers }); 
    } 
} 

答えて

5

あなたはHTTPアクションに加入する必要があり、そうでなければ要求ISN」実際に発射された。それは使用されるまで「寒い」ままです。

あなたのAPIは、例えば、JSONレスポンスを返していました場合、これは、動作します:

this.http.post(this.url, body, { headers }).subscribe(
     data => { 
      console.log(data.json());   
     } 
); 
+0

は、このデータ変数では、サーバからのJSON-ED応答のですか?したがって、ノードがres.json({a:b})としてrequiestに応答する場合、data = {a:b}?しかし、あなたが議論なしで購読しているのを見ることができるので、私の答えはどちらも正しいと思います。 –

+0

はい、 'data'には応答が含まれています。実際には、@ angular/httpモジュールのResponseオブジェクトです。 'data'変数はもちろんあなたが好きなものであれば何でも構いません。 – Delosdos

0

問題:

1) Rxjs/Rxをインポートする

2)この(追加購読()メソッドに関数sendLocationを変更する)

3をURLエンコードするためのヘッダーを変更する):

sendLocation(location){ 
    let body = JSON.stringify(location); 
    let headers = new Headers(); 
    headers.append('Content-Type', 'application/x-www-form-urlencoded'); 
    this.http.post(this.url, body, {headers: headers}).subscribe(); 
    }