当前位置: 首页 > 面试题库 >

AngularJS 2:从json文件获取数据不起作用

钱峻
2023-03-14
问题内容

我正在尝试从Angular服务hero.service.ts获取json数据。当在MemoryDataService中使用伪造的HTTP
API时,一切正常,我从in-memory-
data.service.ts文件中获取json数据。但是,当我尝试从真实的json文件中获取数据时,它不起作用,并且在浏览器中出现错误“找不到集合”。

以下是文件内容(所有3个文件都位于app /文件夹中):

hero.service.ts:

import { Injectable } from '@angular/core';
import { Headers, Http , Response} from '@angular/http';

import 'rxjs/add/operator/toPromise';

import { Hero } from './hero';

@Injectable()
export class HeroService {

    private heroesUrl = 'app/fakeListOfHeroes';  // URL to web api
    //private heroesUrl = 'app/heroes.json'; // URL to JSON file

    constructor(private http: Http) { }

    getHeroes(): Promise<Hero[]>
    {
        return this.http.get(this.heroesUrl)
                .toPromise()
                .then(response => response.json().data)
                .catch(this.handleError);
    }

    private handleError(error: any)
    {
        console.error('An error occurred', error);
        return Promise.reject(error.message || error);
    }
}

hero.service.ts:

    export class InMemoryDataService {
      createDb() {
        let fakeListOfHeroes = [
        {id: 11, name: 'Mr. Nice'},
        {id: 12, name: 'Narco'},
        {id: 13, name: 'Bombasto'},
        {id: 14, name: 'Celeritas'},
        {id: 15, name: 'Magneta'},
        {id: 16, name: 'RubberMan'},
        {id: 17, name: 'Dynama'},
        {id: 18, name: 'Dr IQ'},
        {id: 19, name: 'Magma'},
        {id: 20, name: 'Tornado'}
        ];
        return {fakeListOfHeroes};
      }
  }

heroes.json:

    {
        "data": [{
            "id": 11,
            "name": "Mr. Nice"
        }, {
            "id": 12,
            "name": "Narco"
        }, {
            "id": 13,
            "name": "Bombasto"
        }, {
            "id": 14,
            "name": "Celeritas"
        }, {
            "id": 15,
            "name": "Magneta"
        }, {
            "id": 16,
            "name": "RubberMan"
        }, {
            "id": 17,
            "name": "Dynama"
        }, {
            "id": 18,
            "name": "Dr IQ"
        }, {
            "id": 19,
            "name": "Magma"
        }, {
            "id": 20,
            "name": "Tornado"
        }]
    }

浏览器错误:

浏览器错误

任何帮助,将不胜感激。谢谢!


问题答案:

找到了 !这是由于InMemoryBackendService,并InMemoryDataService在使用 main.ts
文件,这似乎是“重定向”从http.get调用方法。注释main.ts文件中的这些行可解决此问题:

    // Imports for loading & configuring the in-memory web api
    import { XHRBackend } from '@angular/http';

    //import { InMemoryBackendService, SEED_DATA } from 'angular2-in-memory-web-api';
    //import { InMemoryDataService }               from './in-memory-data.service';

    // The usual bootstrapping imports
    import { bootstrap }      from '@angular/platform-browser-dynamic';
    import { HTTP_PROVIDERS } from '@angular/http';

    import { AppComponent }         from './app.component';
    import { appRouterProviders }   from './app.routes';

    bootstrap(AppComponent, [
        appRouterProviders,
        HTTP_PROVIDERS
        /*,
        { provide: XHRBackend, useClass: InMemoryBackendService }, // in-mem server
        { provide: SEED_DATA, useClass: InMemoryDataService }      // in-mem server data
        */
    ]);


 类似资料:
  • 问题内容: 我正在尝试使用PHP从以下JSON文件中获取数据。我特别想要“ temperatureMin”和“ temperatureMax”。 这可能真的很简单,但是我不知道该怎么做。我被困在file_get_contents(“ file.json”)之后该做什么。一些帮助将不胜感激! 问题答案: 使用以下命令获取JSON文件的内容: 现在使用解码JSON : 您有一个包含所有信息的关联数组。

  • 问题内容: 我正在尝试从php文件中获取json数据,以在Angular控制器中使用。我在php文件中回显,当我在角度控制器中时,它带回json数据,但是当我尝试做一个 controllers.js : content.php : index.php : 问题答案: 您实际上希望将数据作为JSON发送。为此,您只需要在语句之前添加即可。因此content.php变为: 顺便说一句,您可能需要对控制

  • 我在JSON中有以下数据: 并且我想使用jQuery获得它,这就是我正在做的: 我还尝试使用回调来实现它,这样做: 即使使用回调,我也无法恢复数据。返回函数。而返回未定义的me,并表示回调不是函数。

  • 我试图使用PHP从以下JSON文件中获取数据。我特别想要“temperatureMin”和“temperatureMax”。 这可能真的很简单,但我不知道怎么做。我被困在文件获取内容(“file.json”)之后该做什么。我们将非常感谢您的帮助!

  • 问题内容: 我想从本地计算机上的JSON文件中获取数据。但是我无法获取数据。它显示了$ http的某些跨域错误。 这是我的代码。 任何人都可以帮助我如何显示本地JSON文件中的数据?提前致谢。 问题答案: 很简单,就像

  • 每当我试图从Intent获取uri时,它只是从图像选取器中选择一个图像,它在这里不起作用,这是我的代码。请尽快回答 这是日志: I/Error: java.lang.SecurityException: Permission Denial: read com.android.providers.media.MediaProvider uri content://media/external/ima