" JSON输入的意外结束" Angular 5

时间:2017-12-01 12:02:23

标签: angular

向API发送GET请求时,我总是收到错误(因此响应将落入CATCH而不是TRY),即使是艰难状态也是200。

以下是请求:

// Check if user exists at blur on email input authentication
checkUserExists( platformId: string, email: string) {
    return this.http.get(checkUserExistsAPI + `/${platformId}/${email}`);
}

当我使用Angular 5时,我取下了.map(res)。

这是使用请求的函数:

// Verify if emails exists
verifyEmail(email) {
    if (email) {
        this.authenticationService.checkUserExists( this.platformId, email )
            .subscribe(
                (data: CheckEmailResponse) => {
                    console.log(data);
                },
                (error: CheckEmailResponse) => {
                    console.log(error);

                }
            );
    }
}

它永远不会是console.log(数据),因为我总是收到此错误:

error:{
    error: SyntaxError: Unexpected end of JSON input at JSON.parse (<anonymous>) at XMLHttpRequest.onLo…, text: ""}
    headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
    message:"Http failure during parsing for http://API.com"
name:"HttpErrorResponse"
ok:false
status:200
statusText:"OK"

2 个答案:

答案 0 :(得分:2)

好的,我明白了。 响应没有任何内容正文,默认情况下,Angular 5期望一个Json格式的内容正文,因此它无法工作。无论如何我只需要状态响应来知道它是200还是404。

我在上面的请求中添加了{ responseType: 'text' }

return this.http.get(checkUserExistsAPI + / $ {platformId} / $ {电子邮件} , { responseType: 'text' });

所以现在它设法转到我的TRY / CATCH的TRY,数据等于&#34; null&#34;。但我并不关心数据,因为我只关心地位。无论如何,现在如果状态是200,它将进入TRY,如果状态是404,它将进入CATCH。

答案 1 :(得分:0)

这是头部请求的目的。当您不需要该对象时,只需有关该对象的元数据,例如状态码。看到: https://angular.io/api/common/http/HttpClient#head