我使用相同的代码来获取/发布到我的API,就像我之前的应用程序一样,但现在它不起作用:
let options_ = {
method: "get",
headers: new Headers({
"Content-Type": "application/json",
"Accept": "application/json"
})
};
return this.http.get(url_, options_).flatMap((response_) => {
return this.processResponse(response_);
})
这个代码在我的其他应用程序中适用,但在这个代码中没有。它没有到达服务器,在流量选项卡中我看不到请求。我在服务器上启用了cors。我该如何解决这个问题?
答案 0 :(得分:3)
除非subscribe
Observable
函数返回get
,否则不会执行请求,如下例所示:
doGet() {
return this.http.get(url_, options_).flatMap((response_) => {
return this.processResponse(response_);
});
}
yourOtherFunction() {
doGet().subscribe(result => {
// your code
});
}
答案 1 :(得分:1)
尝试使用observables fucntions
获取方法
getFuntion(): Observable<any[]> {
return this._http.get(this._baseUrl+'/controller/api')
.map(res => {
return res.json().map(item => {
return item;
});
});
}
发布方法
postFunction(id, action) {
let data = {
id: id,
action: action
};
let body = JSON.stringify(data)
let head = new Headers({
'Content-Type': 'application/json'
});
return new Observable(observer => {
this._http.post(this._baseUrl+'/controller/api/',
body , {headers : head})
.map((res: Response) => res.json())
.subscribe(res => {
observer.next(res);
observer.complete();
});
});
}