![](/img/trans.png)
[英]Axios and fetch both in Reactjs are making continuous localhost network request
[英]ReactJS: Fetch request to localhost php page
我正在学习 PHP 并将其集成到 reactJS 中。 但是我遇到了一个奇怪的问题,我似乎无法找到解决方案。
下面的简单表格:
class App extends React.Component {
state = {
company:'',
person:'',
};
handleChange = (event) => {
const target = event.target;
const fieldName = target.name;
const value = target.value;
this.setState({
[fieldName]: value,
});
};
handleSubmit = async () => {
let date = new Date();
const headers = {
'Content-Type': 'application/json;charset=UTF-8',
'Access-Control-Allow-Origin': '*',
};
let submission = {
method: "POST",
headers: headers,
body: {
created: date,
employee: {
company: this.state.company,
person: this.state.person,
},
}
}
let submitRequest = await fetch ('/src/php/requests.php', submission)
<I tried using localhost/src/php to src/php to php/ to no effect
console.log("Submit response: ",submitRequest)
};
render() {
return (
<div ><form><div>
<span style={{width: '150px'}}>
Company
<input
name="company"
type="text"
onChange={this.handleChange}
/>
</span></div>
<div><span style={{width: '150px'}}>
Name
<input
name="person"
type="text"
onChange={this.handleChange}
/>
</span> </div>
<button onClick={this.handleSubmit}> Submit </button>
</form>
</div>
);
}
}
export default App;
该应用程序旨在引用数据并将数据发送到本地托管的请求。php(下)
try {
$db = pg_connect("$host $port $dbname $login");
} catch(Exception $e) {
print "Exception: " . $e->getMessage();
}
if(!$db){
exit(pg_last_error() . "\n");
}
print "DB successful login \n";
$company = $person = $date = '';
$companyErr = $personErr = $dateErr = '';
$finalSubmission = '';
if ($_POST){
appendLog($_POST); <simple logger to write post to file when received>
return($_POST);
}
我知道 PHP 方面的一切都在工作,但是在 React 和 PHP 之间卡住了一些东西,因为我得到了错误
Uncaught (in promise) TypeError: NetworkError when attempting to fetch resource.
我究竟做错了什么? 所有的变化是地址栏用?company=<name>&person=<name>
刷新
所以问题是多方面的。 问题 1) 行为不稳定,导致所有初始问题。 删除表单修复了在地址栏中插入内容的网页,现在还允许通过 CORS 向 go 请求。 这是过去 2 天让我陷入困境的主要问题,让我陷入了困境。 只需将其保存到 state 就可以创造奇迹。
问题 2) 我最初提交的内容中缺少一些内容,已添加并重新格式化。 如果需要,您可以将其与上面的先前版本进行比较。
const headers = {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
};
let requestBody = {
created: date,
employee: {
company: this.state.company,
person: this.state.person
}
};
let submission = {
method: "POST",
headers: headers,
mode: 'cors',
body: JSON.stringify(requestBody),
cache: 'no-cache',
referrerPolicy: 'no-referrer',
}
问题 3) CORS 需要在 PHP 端的标头中使用正确的参数。 通过添加以下代码已解决此问题。 它的关键也是,它必须是 php 文件顶部的第一件事(如下所述)
<?php
if ($_SERVER['REQUEST_METHOD'] === 'OPTIONS') {
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: *');
http_response_code(200);
return;
}
header('Access-Control-Allow-Origin: *');
header('COntent-Type: application/json');
...rest of PHP, include, and functions.
这解决了我在系统上访问 php 文件的问题。 我最终使用"http://localhost:80/<website>/src/php/requests.php"
来访问它。
希望这可以帮助将来遇到类似问题的任何人。 这绝对是一个令人困惑的问题,因为我不知道以这种方式与 react 交互。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.