首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Angular2 http.get()总是给404

Angular2 http.get()总是给404
EN

Stack Overflow用户
提问于 2017-06-21 22:08:37
回答 1查看 236关注 0票数 0

我正在尝试从文件中加载一个虚拟的json数据,但似乎angular2 http.get方法无法提取该数据。我正在使用下面的代码。

代码语言:javascript
运行
复制
const obs: Observable<any> = this.http.get('http://localhost:4200/assets/mock-json/cashback.json')
    .map((res: Response) => {
      console.log('***********',res.json());
      res.json(); })
    .do((res) => this.loadedCB = res);
 if (this.loadedCB) {
     return Observable.of(this.loadedCB);
 }

即使我在浏览器中手动尝试URL http://localhost:4200/assets/mock-json/cashback.json,它也能正常工作。我不明白为什么它不能与http.get()一起工作。

EN

回答 1

Stack Overflow用户

发布于 2017-06-21 22:25:53

这个问题可能会发生,因为你从来没有订阅过observable,所以它可能会开始执行,因此你不会得到任何结果,因为请求没有发送(你可以在一些web检查器的网络选项卡中查看)。

您应该尝试订阅可观察对象,以便它可以开始执行。

示例:

代码语言:javascript
运行
复制
export class AppComponent implements OnInit {
  loadedCB: any;

  constructor(public http: Http) {
  }

  ngOnInit() {
    this.tryAndLoad();
  }

  tryAndLoad() {
    this.load().subscribe((res: any) => {
      this.loadedCB = res;
      if (this.loadedCB) {
        console.log(this.loadedCB);
        return Observable.of(this.loadedCB);
      }
    });
  }

  load() {
    return this.http.get('http://localhost:4200/assets/mock-json/cashback.json')
      .map((res: Response) => {
        console.log('***********', res);
        return res.json();
      })
  }
}

它会正确地返回一个结果,然后您可以随心所欲地处理该值,因为您返回的是一个可观察对象,因此您可以做其他事情(此演示不会处理此问题)

为了不出现this.http.get(...).map错误,还要在页面顶部添加导入'rxjs/Rx';

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44678483

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档