Angular 服务无法读取 Slim REST API link
Angular service can't read Slim REST API link
我已经设置了 Slim REST API 以从 table trading_partner
.
获取数据
<?php
// Call database connection
require_once('dbconnect.php');
// Display all records
$app->get('/path/to/trading_partner', function($request) {
$query = "SELECT *
FROM trading_partner
order by trading_partner_id";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
if(isset($data)) {
return json_encode($data);
}
mysql_close($conn);
});
然后我用这个 link 来调用它。
http://localhost:52095/path/to/trading_partner
我的问题是当我尝试在我的 Angular 项目中使用 link 时,它没有输出任何内容或无法检索它提供的数据。但是当我尝试从字面上复制 link 的输出并将其粘贴到文件中并将其存储到资产文件夹时,到那时 Angular 会正确读取它。
这是我的交易-partner.service.ts:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { TradingPartner } from './trading-partner';
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
@Injectable()
export class TradingPartnerService {
private tradingPartnerUrl = 'http://localhost:52095/path/to/trading_partner';
constructor(private http: HttpClient) { }
getTradingPartners (): Observable<TradingPartner[]> {
return this.http.get<TradingPartner[]>(this.tradingPartnerUrl);
}
}
这是我的交易-partners.component.ts:
import { Component, OnInit } from '@angular/core';
import { TradingPartner } from './trading-partner';
import { TradingPartnerService } from './trading-partner.service';
@Component({
selector: 'app-trading-partners',
templateUrl: './trading-partners.component.html',
styleUrls: ['./trading-partners.component.css']
})
export class TradingPartnersComponent implements OnInit {
tradingPartners: TradingPartner[];
constructor(private tradingPartnerService: TradingPartnerService) { }
ngOnInit() {
this.getTradingPartners();
}
getTradingPartners(): void {
this.tradingPartnerService.getTradingPartners()
.subscribe(tradingPartners => this.tradingPartners = tradingPartners);
}
}
这是我的交易-partner.ts class:
export class TradingPartner {
trading_partner_id: number;
tp_name: string;
tp_location: string;
flag: number;
creation_date: string;
created_by: string;
update_date: string;
updated_by: string;
}
我还在学习 Angular 和 PHP。我做错了什么?
更新: 我是 运行 使用 Chrome 但是当我尝试使用 Microsoft Edge 打开我的 Angular 应用程序时,它显示查询 table。我认为这是浏览器支持问题。 Chrome 有什么方法可以显示查询吗?
终于有同事帮了我。 Chrome named,
中的插件存在问题
允许控制允许来源
安装并启用后,我可以查看 REST API 调用。
我已经设置了 Slim REST API 以从 table trading_partner
.
<?php
// Call database connection
require_once('dbconnect.php');
// Display all records
$app->get('/path/to/trading_partner', function($request) {
$query = "SELECT *
FROM trading_partner
order by trading_partner_id";
$result = mysql_query($query);
while($row = mysql_fetch_assoc($result)) {
$data[] = $row;
}
if(isset($data)) {
return json_encode($data);
}
mysql_close($conn);
});
然后我用这个 link 来调用它。
http://localhost:52095/path/to/trading_partner
我的问题是当我尝试在我的 Angular 项目中使用 link 时,它没有输出任何内容或无法检索它提供的数据。但是当我尝试从字面上复制 link 的输出并将其粘贴到文件中并将其存储到资产文件夹时,到那时 Angular 会正确读取它。
这是我的交易-partner.service.ts:
import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { TradingPartner } from './trading-partner';
const httpOptions = {
headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};
@Injectable()
export class TradingPartnerService {
private tradingPartnerUrl = 'http://localhost:52095/path/to/trading_partner';
constructor(private http: HttpClient) { }
getTradingPartners (): Observable<TradingPartner[]> {
return this.http.get<TradingPartner[]>(this.tradingPartnerUrl);
}
}
这是我的交易-partners.component.ts:
import { Component, OnInit } from '@angular/core';
import { TradingPartner } from './trading-partner';
import { TradingPartnerService } from './trading-partner.service';
@Component({
selector: 'app-trading-partners',
templateUrl: './trading-partners.component.html',
styleUrls: ['./trading-partners.component.css']
})
export class TradingPartnersComponent implements OnInit {
tradingPartners: TradingPartner[];
constructor(private tradingPartnerService: TradingPartnerService) { }
ngOnInit() {
this.getTradingPartners();
}
getTradingPartners(): void {
this.tradingPartnerService.getTradingPartners()
.subscribe(tradingPartners => this.tradingPartners = tradingPartners);
}
}
这是我的交易-partner.ts class:
export class TradingPartner {
trading_partner_id: number;
tp_name: string;
tp_location: string;
flag: number;
creation_date: string;
created_by: string;
update_date: string;
updated_by: string;
}
我还在学习 Angular 和 PHP。我做错了什么?
更新: 我是 运行 使用 Chrome 但是当我尝试使用 Microsoft Edge 打开我的 Angular 应用程序时,它显示查询 table。我认为这是浏览器支持问题。 Chrome 有什么方法可以显示查询吗?
终于有同事帮了我。 Chrome named,
中的插件存在问题允许控制允许来源
安装并启用后,我可以查看 REST API 调用。