react.js使用axios将数据发布到php,但是php echo空了

时间:2017-09-18 08:37:11

标签: javascript php ajax reactjs axios

我正在使用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获取空数据并回显空值。

3 个答案:

答案 0 :(得分:3)

根据axios docs

  

默认情况下,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);