2017-07-06 52 views
1

我正在角2创建应用程序。我试图通过服务中的http访问json数据。但我得到一个错误说,角2:从HTTP访问JSON时出错

**GET http://localhost:4200/data/products.json 404 (Not Found)** 

我有指定文件夹中的数据,但我无法访问它。

我的服务代码如下。

import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 
import { Observable } from 'rxjs'; 
import 'rxjs/add/operator/map'; 
import { Item } from './item'; 

@Injectable() 
export class ItemService { 
observableItems: Observable<Item[]> 
allItems: Item[] = []; 
selectedItems: Item[] = []; 
errorMessage: string; 
url = "http://localhost:4200/data/products.json"; 
constructor(private http:Http) { 
    this.observableItems = this.http.get(this.url).map((res: Response) => res.json()); 
    this.observableItems.subscribe(
      data => this.allItems = data, 
     error => this.errorMessage = <any>error); 
} 
getItems(): Observable<Item[]> { 
    return this.observableItems; 
} 
getSelectedItems(): Item[] { 
    return this.selectedItems; 
} 
    addItem(id:number): void { 
     let item = this.allItems.find(ob => ob.id === id); 
     if (this.selectedItems.indexOf(item) < 0) {  
     this.selectedItems.push(item); 
    } 
    } 
    removeItem(id:number): void { 
    let item = this.selectedItems.find(ob => ob.id === id); 
    let itemIndex = this.selectedItems.indexOf(item); 
     this.selectedItems.splice(itemIndex, 1); 
    } 
} 

enter image description here

+0

你可能想访问JSON格式提供数据服务的端点。地址'http:// localhost:4200/data/products.json'表明有一个'product.json'文件可供下载。您更可能查询“http:// localhost:4200/data/products”。 – dzejdzej

回答

2

我的HTML文件在

"Project/src/app/..." 

因此访问JSON文件,我需要来自标签腰夹和app文件夹,以达到代码和图像的基本目录。我用../从文件夹中回来。

从此我的服务URL将如下:

url = "../../assets/data/products.json"; 
0

尝试使用从你的服务文件的位置的文件直接路径。例如:

url = "data/products.json"; 

它会工作。

+0

我尝试过使用这种方式,但这不起作用。 –

+0

你能告诉我你的文件与服务相关的路径吗?它应该工作。 –

+0

我试图改变文件的路径到src ..路径是url =“./ assets/data/data.json” –