首页 > 解决方案 > axios 不向 php 发送任何数据

问题描述

我在 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'}

标签: phpreactjsaxios

解决方案


您必须更改此行

$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);

请注意,该方法的签名与Axios 中的get方法不同,因为该方法不需要 data 参数。postget

将数据发送到存储时使用 POST 动词被认为是一种很好的做法,而如果您要检索某个标识符的数据,则可以使用 GET。

查看此文档以了解 axios 可以使用的 http 动词的解释:https ://restfulapi.net/http-methods/ 。


推荐阅读