从本地php文件中获取数据

时间:2017-04-19 11:10:37

标签: angular

我正在尝试从我的项目中的/ app文件夹中的php文件中获取数据。

Php看起来像

<?php
    header("Access-Control-Allow-Origin: *");
    $data = array(
        array('id' => '1','first_name' => 'Cynthia'),
        array('id' => '2','first_name' => 'Keith'),
        array('id' => '3','first_name' => 'Robert'),
        array('id' => '4','first_name' => 'Theresa'),
        array('id' => '5','first_name' => 'Margaret')
    );

    echo json_encode($data);
?>

还有app.components.ts

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

@Component({
  selector: 'app-root',
  template: `<ul>
        <li *ngFor="let person of data">
           {{person.id}} - {{person.first_name}}
        </li>
         </ul>`
})
export class AppComponent {

    private data;

    constructor(
        private http:Http
        ) {}

    ngOnInit(){
        this.getData();
    }

    getData(){
       return this.http.get('./index.php')
        .subscribe(
                data=>this.data = JSON.stringify(data),
                error =>console.log(error),
                ()=>console.log("done"));
    }
}

问题是我收到404错误

  

获取http://localhost:4200/index.php 404(未找到)

如何从本地获取php文件中的数据?

1 个答案:

答案 0 :(得分:0)

由于评论往往被忽视,以下是我们讨论的答案:

使用像'./index.php'这样的相对路径时,angular会在localhost下查找此文件。但是你提到该文件位于app-folder中。因此,不要提供相对路径,而是使用完整的&#34; url&#34;,从顶层开始,通常是src

当这个问题解决后,仍会出现问题,你不会返回JSON,而是返回你编写的php脚本。你的php脚本需要一个服务器。如果您在Windows上运行,Uniform Server在开发过程中是一个可行的选择。只需记住在你的php脚本中启用CORS,就像你有:

header("Access-Control-Allow-Origin: *");

您可能需要在浏览器中启用cors。 Here is the extension for Chrome browser