Get Request Angular 2的意外响应

时间:2017-02-17 04:02:17

标签: angular

背景

Angular 2应用程序正在我的localhost上使用PHP API。我知道我的URL端点设置正确,因为我用Postman检查了它们。当我发出get请求时,响应是我自己页面的html。我得到了成功代码200但响应错误因为

错误

  

EXCEPTION:意外的令牌<在位置0的JSON中

所以,当我在console.log(res)中,我得到了这个,

//来自角度2前端的我自己的HTML。

"<!DOCTYPE html>↵<html>↵<head> etc... 

我期待在回复中这样做,

{
  "error": true,
  "api_key": false,
  "message": "User is registered in our database now use update api to fill other details"
}

问题

什么会导致响应从我正在发出初始请求的页面中保留我自己的html?

代码示例

我的获取请求

  public checkRegister(model: LogReg) {
      // Parameters obj-
      let params: URLSearchParams = new URLSearchParams();
      params.set('email', model.email);
      params.set('email_verified', model.email_verified);
      //Http request-
      return this.http.get(STATICS.API_BASE + STATICS.API_LOGIN,
          { search: params }).map((res:Response) =>  res.json());
      }

这就是我处理响应的方式,

 // Login Or Register User On Our Server
        this.logreg = new LogReg(profile.email_verified, profile.email);
        this.checkRegister(this.logreg).subscribe((res)=>{
            console.log(res);
            if (profile.email_verified === false) {
                console.log(res);
                console.log("Check your email to verify your account!");
                this.logout(this.user);
            }

            else if (res.profile_exist === false) {
                console.log(res);
                this.router.navigateByUrl('/profile');

            } else if (res.profile_exist === true) {
                console.log(res);
                this.router.navigateByUrl('/overview');
            }
        });

1 个答案:

答案 0 :(得分:0)

res.json是导致您看到的错误的原因。

res.json正在尝试解析响应的有效负载,由您的控制台判断日志根本不是json。您可以将res.json包装在try catch中,以防止错误导致应用程序无法继续前进。

您可能希望在开发工具中打开网络选项卡时触发get请求,并验证您的请求是否正在发送您所期望的内容。此外,我怀疑如果你正在进行API调用来检查有效负载,你会想要发送一个帖子请求。