【问题标题】:Promise always gets rejected承诺总是被拒绝
【发布时间】:2018-05-09 21:59:12
【问题描述】:

我编写了一个简单的休息服务作为后端,我从我的前端 Angular 网页调用它。下面是进行调用的前端代码。 无论是否给出了有效的人,promise 都会被拒绝并显示错误消息。

savePerson(person: Person) {
    const jsonHeader = 'application/json';
    const jsonPerson = JSON.stringify(person);

    return new Promise((resolve, reject) => {
        this.httpClient.post(this.url, jsonPerson, {
            headers: new HttpHeaders()
                .set('Accept', jsonHeader)
                .set('Content-Type', jsonHeader)
        })
            .toPromise()
            .then(
                res => { // Success
                    console.log("success");
                    resolve(res);
                },
                res => {
                    console.log("rejected");
                    reject(res)
                }
            );
    });
}

此代码在用户按下按钮后被调用:

 savePerson() {

    this.myService.savePerson(this.person).then(
        result => {
            this.showMessage("Saved");
        },
        error => {
            console.log(error);
            this.showMessage("Error when saving")
        }
    );
}

记录的错误(输入有效人员): Object { headers: {…}, status: 201, statusText: "Created", url: "http://localhost:8080/api/v1.0/person", ok: false, name: "HttpErrorResponse", message: "Http error during parsing for http://localhost:8080/api/v1.0/person", 错误: {…} }

我假设这是前端应用程序的问题,因为后端返回创建的 HTTP 201。 如果有人能为我找出问题所在,那就太好了!

【问题讨论】:

标签: javascript angular rest promise


【解决方案1】:

Angular 正在尝试解析 HTTP 响应,而您的服务器(我猜)以空白的 HTTP 响应进行响应。告诉 Angular 响应只是文本应该可以修复错误:

this.httpClient.post(this.url, jsonPerson, {
    responseType: 'text',
    headers: new HttpHeaders()
        .set('Accept', jsonHeader)
        .set('Content-Type', jsonHeader)
})

【讨论】:

    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 2019-11-25
    • 2018-02-25
    • 2017-06-19
    • 1970-01-01
    相关资源
    最近更新 更多