【问题标题】:get JSON from 404 response from a Http.get()从 Http.get() 的 404 响应中获取 JSON
【发布时间】:2017-06-23 18:34:14
【问题描述】:

我正在尝试从 404 响应中获取 JSON,但我只得到了

Response {_body: "{myJSON}", status: 404, ok: false, statusText: "Not Found", headers: Headers…}

我如何获得object 本身,以便我可以使用{{error.text}} 在我的HTML 上打印它,就像我在http.get() 上所做的那样?

这是我的代码:

getList(): Promise<Response> {
    return this.http.get(this.apiUrl+'list/')
.toPromise() 
.then(response => { 
  console.log(response.json()); return response.json()})
.catch(this.handleErrorPromise)   
}
//if an error ocurred while doing api calls 
  private handleErrorPromise (error: Response | any) {
  console.error("EEEEE" + error.message || error);
  return Promise.reject(error.message || error);
    }

当它加入.then 时,它会很好,它会返回一个对象,所以我的component 可以使用它(我在我的组件上使用它......让我知道它是否好用请使用其他方法)

ngOnInit(): void {
this.ListServiceProvider.getList().then( 
list=> {this.mList= list; console.log(list)}, 
error => {this.errorMessage = error; console.log(error)}); 
}

所以在我的 HTML 上,我有一个 *ngIf=errorMessage,所以它加入了那个 div,而不是当响应正常时,但它没有显示我想要的 JSON...你能告诉我我的代码有什么问题吗?

【问题讨论】:

  • 你能记录响应吗?
  • 是的,但是当它不是 404 时,它会在我的控制台中显示一个对象,但是当它是 404 时,它会返回我所说的响应

标签: angular typescript ionic-framework ionic2


【解决方案1】:

在这种情况下,您可以使用新的 Angular If else

  <ng-template #fetching>
    //you can even check here optional ngIf
    <p *ngIf = "errorMessage">{{errorMessage?.imageURL}</p> // update after comment
  </ng-template>

  <p *ngIf="mList; else fetching;">
  // when Data comes do something here else use the else template
  </p>

【讨论】:

  • 但我不想显示例如“错误未找到数据”我想显示来自 404 错误的 JSON 结果
  • 它没有返回一个对象......只是一个响应
  • @Stuart2041 如果它没有返回我所要求的响应,您是否能够记录您告诉是的响应,当响应为 404 时您是否在代码中处理这种情况您是否返回任何对象?
  • 我在控制台上看到这个响应 {_body: "{myJSON}", status: 404, ok: false, statusText: "Not Found", headers: Headers...}
  • @Stuart2041 在组件控制台或服务中?以及你想在错误时显示什么
猜你喜欢
  • 1970-01-01
  • 2022-06-28
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
  • 2021-09-12
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多