2016-12-19 30 views
0

我需要幫助製作一個可點擊列表來切換點擊顏色。 我已經知道如何從外部網站讀取數據,但現在我想將數據發送到該網站。我已經與郵遞員合作了。PUT請求與angular2在ionic2中

http://www.external.tld/page/{id} 
name = test 
color = toggle 

所以我已經得到了JSON數據是這樣的:

{"id":"6","name":"test1","color":"red"}, 
{"id":"7","name":"test2","color":"red"} 

這是當前的HTML代碼檢索數據:所以現在

<ion-item *ngFor="let data of data" [style.backgroundColor]="data?.color" (click)="PostData(data?.id)"> 
    {{data?.name}} 
</ion-item> 

我需要有一個工作POSTDATA函數,它使用PUT方法在紅色和綠色之間切換顏色並將其發送到上面的頁面。

因此,舉例來說,如果我點擊列表中的ID爲:6名:TEST1和顏色:紅這應該是輸出:

http://www.external.tld/page/6 
name = test1 
color = green 

我走到這一步,不工作的代碼:

PostData(data:any) { 
    let headers = new Headers({ 'Content-Type': 'application/json'}); 
    let options = new RequestOptions({ headers: headers }); 
    return this.http.post('http://www.external.tld/page/'+data, JSON.stringify(data), options) 
     .map((res: Response) => res.json()); 
} 
+0

好一兩件事,這是一個帖子,而不是放! – jonrsharpe

+0

嗯,我很確定這是一個放,因爲郵遞員版本與郵遞員不起作用。我正在使用laravel的更新控制器,它只有在接收到put時才起作用。 – Jozzy91

+0

不,我的意思是'this.http.post'是一個帖子。 – jonrsharpe

回答

1

你需要subscribe當你與觀測量工作,因爲他們是懶惰:

PostData(data:any) { 
    let headers = new Headers({ 'Content-Type': 'application/json'}); 
    let options = new RequestOptions({ headers: headers }); 
    return this.http.post('http://www.external.tld/page/'+data, JSON.stringify(data), options) 
     .map((res: Response) => res.json()) 
     .subscribe(
     res => { 
      console.log(res); // this should print server's response after you post data 
     }, 
     error => { 
      console.log(error); // this will print error if it occurs 
     }); 
} 
+0

感謝您的回覆,您是否也可以幫我一點點做出這項工作,因爲它不會在鏈接中追加id,也不會發送像我想要的名字和顏色。 – Jozzy91

+0

我可以做如下somrthing:return this.http.post('http://www.external.tld/page/'+data?.id,JSON.stringify(data),options).map((res:Response )=> res.json())。subscribe(....);注意在html中工作的數據?.id。我將如何發送名稱和顏色?因爲我不知道我的api是否可以讀取json數據並提取它需要的名稱和顏色。 – Jozzy91