Issue
I'm trying to send a post request. But the API returns undefined, and I send it to my API, as it turned out [object Object]
getAccouting():Observable<any>{
// let json = this.http.get<any>('/assets/cities/altayskiy_kray/accounting.json'); if i use it json return undefined
let json;
this.http.get('/assets/cities/altayskiy_kray/accounting.json').pipe(data=>json=data);
let formData:FormData = new FormData;
formData.append('json', json);
return this.http.post<any>('http://api/api.php', formData);
}
How fix that?
Solution
http.get is async so it will not have emitted before you return the http.post. Therefore, json will be undefined.
Instead you can chain them and return the whole observable:
getAccouting(): Observable<any>{
return this.http.get('/assets/cities/altayskiy_kray/accounting.json').pipe(
switchMap(json => {
return this.http.post<any>('http://api/api.php', json);
}
);
}
Do you need to use FormData? If you append the json object then you will get its string value: [object Object].
You could stringify the json object, but you will have to decode it on the server:
formData.append('json', JSON.stringify(json))
Answered By - Steve Holgado
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.