我正在尝试从我的项目中的/ 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文件中的数据?
答案 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