2017-09-18 37 views
3

我使用react.js,爱可信和PHP发布数据MySQL数据库react.js采用爱可信发布数据到PHP,但PHP的echo空

这是我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获得空数据并回显空值。

回答

0

尝试采取从JSON它phpinput是halpfull对我来说:

echo file_get_contents('php://input'); 
echo json_decode(file_get_contents('php://input'), true); 
+0

感谢你的答案 但我铬安慰我 连接成功yayaya {“名”:“杰西”}
注意:数组字符串CON版本/Applications/XAMPP/xamppfiles/htdocs/foodMaster/build/sendData。在线PHP
[]数组 并不是所有的数据被回声 –

+0

@ZakChen OK,好,现在尝试调试输入数据,并回声json_decode一些变种,而不是,你需要采取JSON字符串,然后解码它 –

1

按照axios docs

默认情况下,爱可信序列化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似乎不如我虽然

+0

我使用选项1,但它也控制台连接成功yayaya [] –

1

不要砍使用,使正确的代码为您的项目。

首先在您的项目中安装此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] => [email protected] 
    [password] => [email protected]$ 
)