php - 使用 Laravel API 在 Angular 中不显示数据
问题描述
使用 Laravel 后端和 Angular 前端。我在 Angular 中有以下代码段,employee.component.ts
import { Component, OnInit } from '@angular/core';
import { DataService } from 'src/app/service/data.service';
@Component({
selector: 'app-employees',
templateUrl: './employees.component.html',
styleUrls: ['./employees.component.css']
})
export class EmployeesComponent implements OnInit {
// tslint:disable-next-line: whitespace
// tslint:disable-next-line: typedef-whitespace
employees: any;
constructor(private dataService: DataService) { }
ngOnInit(): void {
this.getEmployeesData();
}
// tslint:disable-next-line: typedef
getEmployeesData() {
this.dataService.getData().subscribe(res => {
this.employees = res;
});
}
}
数据服务.ts
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
@Injectable({
providedIn: 'root'
})
export class DataService {
constructor(private httpClient: HttpClient) { }
// tslint:disable-next-line: typedef
getData() {
return this.httpClient.get('http://127.0.0.1:8000/api/employee');
}
}
员工.component.html
<table class="table">
<thead>
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Email</th>
<th scope="col">Salary</th>
</tr>
</thead>
<tbody>
<tr *ngFor="let emp of employees">
<th scope="row">{{emp.id}}</th>
<th> {{emp.name}}</th>
<th>{{emp.email}}</th>
<th> {{emp.salary}}</th>
</tr>
</tbody>
</table>
和我的 Laravel api.php
Route::middleware('auth:api')->get('/user', function (Request $request) {
return $request->user();
});
Route::get('employee','EmployeeController@getEmployee');
Route::get('employee/{id}','EmployeeController@getEmployeeById');
Route::post('addEmployee','EmployeeController@addEmployee');
Route::put('updateEmployee/{id}','EmployeeController@updateEmployee');
Route::delete('deleteEmployee/{id}','EmployeeController@deleteEmployee');
但在我的 Angular html 文件中不是数据库员工数据。这里没有任何错误。Angular 和 Laravel 项目都在运行。我该如何解决这个问题?
在控制台中
编辑我的错误Access to XMLHttpRequest at 'http://127.0.0.1:8000/api/employee' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
127.0.0.1:8000/api/employee:1 Failed to load resource: net::ERR_FAILED
ERROR HttpErrorResponse {headers: HttpHeaders, status: 0, statusText: "Unknown Error", url: "http://127.0.0.1:8000/api/employee", ok: false, …}
解决方案
您的请求被 CORS 阻止。为了解决您的问题,您应该尝试更新cors.php
以允许您的主机(请记住也包括端口,因为它很重要)。
或者,您可以遵循Laravel 5.1 API Enable Cors,尽管它很旧,但这些概念确实适用。
已编辑:根据对问题的评论,这个 SO 答案也可能很有用。
推荐阅读
- reactjs - 警告:道具类型失败:提供给“编辑器”的“对象”类型的无效道具“值”,应为“字符串”
- android - Android Volley onResponse 功能未运行
- python - 如何在 pandas python 中同时进行多个连接?
- sql - 高效地从范围日期分解到每日?
- javascript - 如何在猫鼬连接上使用“Node.js 3.0 或更高版本”?
- javascript - Typeahead.js 不显示建议
- gradle - 检索 https://nvd.nist.gov/feeds/json/cve/1.0/nvdcve-1.0-modified.meta 时出错;收到响应码 404
- python - 处理 pytest 参数字符串中的单引号
- python - 如何量化 keras 模型,同时将其转换为 TensorflowJS 层模型?
- c - 使用 scatter/gather I/O (readv/writev) 复制文件时不需要的字符