如何使用angular 2读取PHP生成的JSON响应
我使用Angular2作为前端,PHP和MySQL作为后端 PHP正确地创建json数据,但angular 2无法读取文件内容。我得到下面的错误如何使用angular 2读取PHP生成的JSON响应,php,json,angular2-services,Php,Json,Angular2 Services,我使用Angular2作为前端,PHP和MySQL作为后端 PHP正确地创建json数据,但angular 2无法读取文件内容。我得到下面的错误 XMLHttpRequest cannot load http://localhost:81/login.json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is the
XMLHttpRequest cannot load http://localhost:81/login.json.
No 'Access-Control-Allow-Origin' header is present on the requested resource.
Origin 'http://localhost:4200' is therefore not allowed access. The response had HTTP status code 404.
JSON文件位于以下位置。我正在使用XAMPP运行我的php文件
我的angular 2代码如下
import { Component, OnInit, Input } from '@angular/core';
import { Http, Response } from '@angular/http';
@Component({
moduleId: module.id,
selector: 'app-header-modal',
templateUrl: './header-modal.component.html',
styleUrls: ['./header-modal.component.css']
})
export class HeaderModalComponent implements OnInit {
private data;
constructor(private http:Http){
}
ngOnInit(){
}
ngAfterViewInit() {
this.getData();
}
getData(){
this.http.get('http://localhost:81/login.json')
.subscribe(res => this.data = res.json());
console.log('User Data: '+this.data);
}
}
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: X-Requested-With");
include 'connect.php';
$username = str_replace(" ", "", $_POST['username']);
$password = str_replace(" ", "", $_POST['password']);
$query = mysql_query("select username, password, id from registration where username='".$username."' and password='".$password."'");
$result = mysql_fetch_array($query);
if($result){
$data = array(
array('userId' => $result['id'],'userName' => $result['username'])
);
$fp = fopen('login.json', 'w');
fwrite($fp, json_encode($data));
fclose($fp);
?>
<script>
history.go(-1);
</script>
<?php
}
?>
下面是我的PHP代码
import { Component, OnInit, Input } from '@angular/core';
import { Http, Response } from '@angular/http';
@Component({
moduleId: module.id,
selector: 'app-header-modal',
templateUrl: './header-modal.component.html',
styleUrls: ['./header-modal.component.css']
})
export class HeaderModalComponent implements OnInit {
private data;
constructor(private http:Http){
}
ngOnInit(){
}
ngAfterViewInit() {
this.getData();
}
getData(){
this.http.get('http://localhost:81/login.json')
.subscribe(res => this.data = res.json());
console.log('User Data: '+this.data);
}
}
<?php
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Headers: X-Requested-With");
include 'connect.php';
$username = str_replace(" ", "", $_POST['username']);
$password = str_replace(" ", "", $_POST['password']);
$query = mysql_query("select username, password, id from registration where username='".$username."' and password='".$password."'");
$result = mysql_fetch_array($query);
if($result){
$data = array(
array('userId' => $result['id'],'userName' => $result['username'])
);
$fp = fopen('login.json', 'w');
fwrite($fp, json_encode($data));
fclose($fp);
?>
<script>
history.go(-1);
</script>
<?php
}
?>
这似乎是您尝试使用的php服务器后端的CORS问题。由于CORS,您的应用程序无法向php服务器发出请求
正确配置php服务器后,请求应开始工作
.可能与@dave重复:我已在PHP文件中添加了此标题。但是angular 2仍然无法读取login.json文件。我已经在上面添加了我的php代码。请查收并提出建议。