Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 2/Web Api - json parsing error syntax error unexpected end of input

I have a Web API controller that looks like this:

    [HttpPost]     public IHttpActionResult Test()     {         return Ok();     } 

This is correct syntax, However when I try to call this from a service in Angular 2, I get the error message: "json parsing error syntax error unexpected end of input." To resolve this issue, I have to put a value into the ActionResult such as

return Ok(1) 

Am I missing some configuration? My Angular 2 service call looks like this:

return this.http.post(API/Controller/Test).map(res => res.json()); 
like image 645
aoakeson Avatar asked Mar 01 '16 21:03

aoakeson


2 Answers

Another way:

All my http.get, post or put call (for uniformity):

.map(this.extractData) 

In extractData (UPDATED: thanks to raykrow feedback, short code):

private extractData(res: Response) {             return res.text() ? res.json() : {}; ; } 
like image 115
JeromeXoo Avatar answered Sep 28 '22 11:09

JeromeXoo


I guess that when you receive an empty response (without payload) you don't need to call the json method. Under the hood, the XHR response is undefined, JSON.parse(undefined) is called and an error is thrown.

You could skip the call of the map operator:

return this.http.post(API/Controller/Test)/*.map(res => res.json())*/; 
like image 42
Thierry Templier Avatar answered Sep 28 '22 12:09

Thierry Templier