【发布时间】:2020-07-29 10:53:17
【问题描述】:
我的 api 在http://localhost:81/log_api.php 上运行,然后我在同一台计算机上的 React 应用程序在http://localhost:3000 上运行。下面是 React 应用的代码:
import React, { Component } from 'react';
import axios from 'axios';
class Logging extends Component {
state={
pl_log:[]
}
async componentDidMount(){
await axios.get("http://localhost:81/log_api.php")
.then(response=>this.setState(
{
pl_log: response.data
} ))
console.log(this.state)
}
render(){
return(
<div>
Logging
</div>
)
}
}
export default Logging;
我也直接访问过http://localhost:81/log_api.php,完全没问题。它在浏览器上显示 JSON 数据。只有当我在 React 中使用 axios 时才会出现此问题。
文件名:log_api.php
<?php
$link = mysqli_connect("127.0.0.1:3307", "root", "root", "masterdb");
// Check connection
if($link === false){
die("ERROR: Could not connect. " . mysqli_connect_error());
}
$sql = $link -> query("SELECT * FROM pl_log");
$result=array();
while ($data = $sql -> fetch_assoc()){
$result[]=$data;
}
echo json_encode($result);
mysql_close($link);
?>
【问题讨论】:
-
你的 PHP 服务器 CORS 准备好了吗?
-
我在 Chrome 上添加了 CORS 扩展。
-
我在本地计算机上运行 MAMP 服务器。
-
500 错误号表示服务器存在一般问题。 503 表示运行时错误。
-
你在混合mysql apis。
mysql_close()不能与mysqli连接一起使用。我冒昧地猜测它在浏览器中也会失败,但是您看不到它,因为这是 PHP 尝试做的最后一件事。如果直接请求时查看网络选项卡,是否也会显示 500 错误(尽管显示了正确的 JSON)?
标签: javascript reactjs server axios internals