【问题标题】:converting circular structure to json error Ionic 3将循环结构转换为 json 错误 Ionic 3
【发布时间】:2018-05-05 11:59:00
【问题描述】:

大家好,大家都是 angular 2+ 和 ionic 3 的新手,我正在尝试将登录表单从我的 ionic 3 应用程序发布到我的 asp.net Web api 应用程序以执行基于令牌的身份验证,但我收到此错误:循环结构转json报错

这是组件代码:

  @Component({
  selector: 'page-login',
  templateUrl: 'login.html',
  providers:[LoginService],
  })
  export class LoginPageComponent {

  errorMessage:string;
  loginModel = new ILoginModel();
  constructor(public navCtrl: NavController,private loginService: 
  LoginService) {}
  token: string;

  logUser(){

     this.loginService.login(this.loginModel)
    .subscribe(token => this.token= token,
    error => this.errorMessage = <any>error);

  }
  }

这是服务代码:

@Injectable()
export class LoginService{

loginModel: ILoginModel;
urlBase:string = 'http://localhost:1487/';
header = new HttpHeaders()
              .set('content-type','application/x-www-form-urlencoded');
token :any;


constructor(private _http: HttpClient){}


  login(loginModel:ILoginModel):Observable<string>{
     this._http.post(this.urlBase 
     +'token','username='+this.loginModel.userName+
   '&password='+this.loginModel.password+'&grant_type=
  '+this.loginModel.grant_type)
     .map((response: HttpResponse<string>)=> <string>response.body)
    //  .do(data => console.log('Response Token: '+JSON.stringify(data)))
     .catch(this.handleError)
     .subscribe((res: HttpResponse<string>)=>{this.token = res.body});
     return this.token;


    }

    private handleError(error: HttpResponse<any>) {
    console.error(error);
    return Observable.throw(error.body().JSON() || 'Server Error');
  }

  }

谢谢。

【问题讨论】:

    标签: json angular asp.net-web-api ionic-framework ionic3


    【解决方案1】:

    您使用了两次 subscribe 方法。 改变这个

    login(loginModel:ILoginModel){
         return this._http.post(this.urlBase 
         +'token','username='+loginModel.userName+
       '&password='+loginModel.password+'&grant_type=
      '+loginModel.grant_type)
         .map(response=> <string>response.body.json())
        //  .do(data => console.log('Response Token: '+JSON.stringify(data)))
         .catch(this.handleError)
        }
    

    也改变这个。

     token: any;
    
      logUser(){
    
         this.loginService.login(this.loginModel)
        .subscribe(token => {this.token= token,
                            console.log(this.token)},
        error => this.errorMessage = <any>error);
    
      }
      }
    

    【讨论】:

    • 你能再检查一下吗?
    • 它在代码中引发错误:“无法将类型 Observable 分配给 Observable
    • 谢谢你 Melchia,它现在正在工作,我将你的答案标记为有效,但我现在面临的挑战是让它与 Observables 一起工作。
    • 你正在返回一个 Observable 并且你正在你的 logUser 方法中订阅它。
    猜你喜欢
    • 2019-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2018-06-08
    • 2021-10-23
    • 1970-01-01
    相关资源
    最近更新 更多