我在Reactjs中使用axios将用户数据发送到php,然后使用php创建一个新用户,但是当我要发送数据时,它变成空的,并且我的php端出现了一些错误
我的反应代码
import React, { useReducer } from 'react';
import axios from 'axios';
import UserContext from './userContext';
import userReducer from './userReducer';
//Register user
const registerUser = async () =>{
const config = {
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
const response = await axios.post('http://localhost/react_cms/api/users/user.php' , {message : 'ppp'} , config);
console.log(response.data);
}
return (
<UserContext.Provider
value={{
registerUser
}}>
{props.children}
</UserContext.Provider>
);
}
export default UserState;
以及我的php辅助代码:
<?php
$message = isset($_GET['message']) ? $_GET['message'] : 'no';
$data = array ('message' => $message);
echo json_encode($data);
?>
这段代码的结果是:
{message : 'no'}
答案 0 :(得分:1)
您必须更改此行
$message = isset($_GET['message']) ? $_GET['message'] : 'no';
进入
$message = isset($_POST['message']) ? $_POST['message'] : 'no';
或保持原样并通过更改axios调用发送获取请求
来自
const response = await axios.post('http://localhost/react_cms/api/users/user.php' , {message : 'ppp'} , config);
到
const response = await axios.get('http://localhost/react_cms/api/users/user.php?message=ppp', config);
请注意,get
方法的签名与Axios中的post
方法的签名不同,因为get
方法不需要data参数。
在发送数据以存储数据时,最好使用POST动词,而如果要检索某个标识符的数据,则可以使用GET。
请参阅此文档,以获取axios可以使用的http动词的解释:https://restfulapi.net/http-methods/。