【问题标题】:Angular 5 http post not sending requestsAngular 5 http post不发送请求
【发布时间】:2018-08-04 08:03:42
【问题描述】:

我正在尝试在Angular 5 应用程序中实施授权。我有auth.service.tslogin() 方法,它返回Observable<any>。它看起来像这样:

login(loginForm: LoginForm): Observable<any> {
    debugger;
    return this.http.post(`${this.endpoint}session/login`, loginForm)
        .map(res => {
            return res;
        }).catch(error => {
            debugger;
            return Observable.of(false);
        });
}

问题是,当我从组件调用登录方法时,http.post 抛出错误,它在debugger 处停止并且错误看起来像这样:

AppComponent.html:15 ERROR TypeError: Converting circular structure to JSON
at JSON.stringify (<anonymous>)
at HttpRequest.serializeBody (http.js:916)
at Observable.eval [as _subscribe] (http.js:2196)
at Observable._trySubscribe (Observable.js:172)
at Observable.subscribe (Observable.js:160)
at subscribeToResult (subscribeToResult.js:23)
at MergeMapSubscriber._innerSub (mergeMap.js:138)
at MergeMapSubscriber._tryNext (mergeMap.js:135)
at MergeMapSubscriber._next (mergeMap.js:118)
at MergeMapSubscriber.Subscriber.next (Subscriber.js:92)

Chrome 网络选项卡中没有记录 XHR 请求。 有什么想法吗?

【问题讨论】:

  • 嗨..你在后端使用任何 ORM 吗? ..我认为你有一个循环依赖的对象结构
  • 报错信息很清楚:你在尝试发送一个对象,所以需要转成JSON,但是这个对象包含循环结构,所以不能转成JSON。检查 LoginForm 是什么以及包含什么。

标签: angular typescript http angular-services angular-httpclient


【解决方案1】:

正如@JBNizet 指出我正在尝试发送一个无法转换为JSON 的对象,我检查了我的LoginForm,它看起来像这样:

export class LoginForm {
    constructor(public email?: string,
        public password?: string) {}
}

我把我的班级改成:

export class LoginForm {
    public email: string;
    public password: string;
}

现在可以正常使用了

【讨论】:

    猜你喜欢
    • 2018-09-11
    • 2019-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多