我正在使用react.js,axios和PHP将数据发布到MySQL数据库
这是我的react.js代码
{"int_value":1,"str_value":"hi","some":"there"}
这是我的PHP代码
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)
})
}
这是我的Chrome控制台
<?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);
?>
我不知道为什么我的PHP获取空数据并回显空值。
答案 0 :(得分:3)
默认情况下,axios将JavaScript对象序列化为JSON。
一个选项是read json from the body in your PHP code:
$entityBody = file_get_contents('php://input');
然后没有必要将您的数据包装在FormData
中,您可以直接添加它:
axios.post(
'./sendData.php',{
data: {
name: 'jessie',
time: '12:00',
food: 'milk',
nutrition: 'vitaminA'
}
})
另一种选择是在axios中设置Content-type
标题:
axios.post(
'./sendData.php',{
data: data
{
headers: {
'Content-type': 'multipart/form-data'
}
}
})
选项1对我来说似乎更好
答案 1 :(得分:1)
不要使用hack,为您的项目制作正确的代码。
首先在项目中安装此qs节点包。然后,您可以使用此功能stringify
数据并将数据提交给服务器。
axios
已经在其文档文件中明确了该问题。您可以查看using-applicationx-www-form-urlencoded-format链接以获取更多信息。
无论使用什么方法在我的方案中解决此问题的简单方法,这是我的代码:
var qs = require('qs');
var palyload = {
'command': 'userLogin',
"email" : this.state.email,
"password" : this.state.password,
};
axios.post( apiBaseUrl, qs.stringify(palyload) ).then(
function(response){
console.log(response);
}
);
然后您的PHP服务器显示正确的全局数据,如下所示:
Array
(
[command] => userLogin
[email] => asdf@test.com
[password] => af12548@$
)
答案 2 :(得分:0)
尝试从phpinput中获取json对我来说是halpfull:
echo file_get_contents('php://input');
echo json_decode(file_get_contents('php://input'), true);