2016-06-26 25 views
2

私は角2を使って取得要求と投稿要求をしています。私のget要求はうまくいきますが、私の投稿では私のFirebug Netパネルをチェックすると、要求がになっていません。角2のHTTP投稿要求が呼び出されていません

コードのメソッドは次のようになります。また、コンポーネントクラスから呼び出すサブスクライブメソッドもあります。

import {Injectable} from "angular2/core"; 
import {Http, Response, Headers, RequestOptions, Jsonp, URLSearchParams} from "angular2/http"; 
import { Observable }  from 'rxjs/Observable'; 
import 'rxjs/add/operator/map'; 

@Injectable() 
export class MyService{ 
    constructor (private _http: Http){} 


testPost(){  

    var json = JSON.stringify({"userId": 111, "givenName": "CZ"}); 
    var body = "json="+json; 
    var headers = new Headers({ 'Content-Type': 'application/json' }); 
    var options = new RequestOptions({ headers: headers }); 

    return this._http.post("http://mylocal.post.url", body, options) 
     .map(this.extractData) 
     .catch(this.handleError); 

} 

    private extractData(res: Response) { 
    alert("test whether this method is reached"); 

    let body = res.json(); 
    return body.data || { }; 
    } 

    private handleError (error: any) { 
    alert("test whether this method is reached"); 

    let errMsg = (error.message) ? error.message : 
     error.status ? `${error.status} - ${error.statusText}` : 'Server error'; 
    console.error(errMsg); // log to console instead 
    return Observable.throw(errMsg); 
    }  

//testGet method is running well 
testGet(link:string){ 

    return this._http.get(link) 
    .map(res => res); 

}  
} 

私のサブスクライブするメソッドonTestPost()は、ページ上のボタンに割り当てられています。

onTestPost(){ 
    this.myService.testPost() 
    .subscribe(
     data => this.getData = JSON.stringify(data), 
     error => alert(error), 
     () => console.log("Finished")    
     ); 
} 

2つのヘルパーメソッドの先頭にアラート文を挿入しました。いずれのアラートにも到達していません。また、Firebugでデバッグするときに私のローカルポストURLにリクエストが送られてきたことはありません。

私のtestGetメソッドは正しく動作しますが、testPostには何が欠落しているか分かりません。

+0

コードは大丈夫に見えるを参照してください、あなたが本当に適切に加入していなかった可能性が高いです。 – dfsq

+0

偽のバックエンドのようなものがリクエストを受け付けていないことを確認してください。 –

答えて

10

あなたの購読方法が問題だと思います。 subscribeが呼び出されていることを確認してください。

"これは寒く、 何かがオブザーバブルにサブスクライブするまでリクエストが出ないことを意味します。"

https://angular.io/docs/ts/latest/guide/server-communication.html

+0

あなたの返信ありがとう! – ChrisZ

+0

私は自分の購読方法を追加しました。しかし、私のサービスメソッドtestPost()が呼び出されたと思います。私は警告声明を出した。 return文が実行される前のコードを示しました。 – ChrisZ

+0

私はこの返事を以前に見たかったです。一日一杯の掘り出し物を無駄にしてしまった。 – mehta

0
testPost() : Observable <Response> //import{Response} from '@angular/http' 
{  
var json = JSON.stringify({"userId": 111, "givenName": "CZ"}); 
var headers = new Headers({ 'Content-Type': 'application/json' }); 
var options = new RequestOptions({ headers: headers }); 
return this._http.post("http://mylocal.post.url/api",JSON.stringify(json), options) 
    .map((res:Response)=>res.json()) 
    .catch(this.handleError); 
} 
関連する問題