我正在使用react.js、axios和PHP将数据发布到MySQL数据库
这是我的react.js代码
sendData(){
var data = new FormData();
data.append('name', 'jessie');
data.append('time', '12:00');
data.append('food', 'milk');
data.append('nutrition', 'vitaminA');
axios.post(
'./sendData.php',{
data: data
})
.then(response => {
console.log(response)
console.log(response.data)
this.filter = response.data
})
.catch(e => {
this.errors.push(e)
})
}
这是我的 PHP 代码
<?php
$servername = "127.0.0.1";
$username = "root";
$password = "";
$database = "mydb";
$conn = new mysqli($servername, $username, $password, $database);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully yayaya";
echo "the post after this";
echo json_encode($_POST);
?>
这是我的 Chrome 控制台
Connected successfully yayayathe post after this[]
我不知道为什么我的 PHP 得到空数据并回显空值。
根据axios 文档 https://github.com/mzabriskie/axios#using-applicationx-www-form-urlencoded-format
默认情况下,axios 将 JavaScript 对象序列化为 JSON。
一种选择是从 PHP 代码的正文中读取 json https://stackoverflow.com/a/8945912/1633510:
$entityBody = file_get_contents('php://input');
那么就不需要将您的数据包装在FormData
,直接添加即可:
axios.post(
'./sendData.php',{
data: {
name: 'jessie',
time: '12:00',
food: 'milk',
nutrition: 'vitaminA'
}
})
另一个选项是设置Content-type
axios 中的标头:
axios.post(
'./sendData.php',{
data: data
{
headers: {
'Content-type': 'multipart/form-data'
}
}
})
不过,选项 1 对我来说似乎更好
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)