PHP如何接收Axios的POST方法发送过来的JSON数据

在前端学习中发现PHP的$_POST无法接收Axios传送过来的post数据
print-r($_POST)显示为空
解决办法,利用"php//input"将数据读出再转换为数组

header('Access-Control-Allow-Origin: *');//允许所有连接,根据情况更改
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");//允许的方法
header("Access-Control-Allow-Headers: Content-Type, Authorization");
$data = json_decode(file_get_contents("php://input"), true);

在这里插入图片描述

<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
$list = [
    'msg'=>'',
    'data'=>'',
];
function getGoods(){
    $server = 'localhost';
    $user = 'root';
    $password = '';
    $conn = mysqli_connect($server,$user,$password);
    if(!$conn){
        die('数据库连接失败'.mysqli_connect_error());
    }else{
        $sql = "use ***;";//首先选择数据库
        $conn->query($sql);
        $sql = "select * from goods;";
        $result = $conn->query($sql);
        $list = [];
        foreach($result as $key => $value){
            //若单个转换为JSON格式后再输出,get请求这个网址后得到的data为STRING类型
            array_push($list,$value);
        }
        return $list;
    }
    $conn->close();
}

function addGoods($post){//添加
    $server = 'localhost';
    $user = 'root';
    $password = '';
    foreach($post as $key => $value){
        //判断是否为数组
        if(is_array($value)){
            foreach($value as $k => $v){
                $post[$k] = htmlspecialchars($v);
            }
        }
        //数据处理
        else{
            $post[$key] = htmlspecialchars($value);
        }
    };
    $conn = mysqli_connect($server,$user,$password);
    if(!$conn){
        die('数据库连接失败'.mysqli_connect_error());
    }else{
        $sql = "use ***;";//首先选择数据库
        $conn->query($sql);
        $sql = "select * from goods where gname = '{$post['gname']}';";
        $conn->query($sql);
        if($conn->affected_rows>0){
            return '该物品已存在';
        }else{
            $sql = "insert into goods(gname,gprice,gnum) values(?,?,?);";
            $stmt = $conn->prepare($sql);
            $stmt->bind_param('sii',$post['gname'],$post['gprice'],$post['gnum']);
            $stmt->execute();//执行!
            if($stmt->affected_rows>0){
                return '添加成功';
            }else{
                return '添加失败';
            }
        }
    mysqli_close($conn);
    }
}

function deleteGoods($id){//删除
    $server = 'localhost';
    $user = 'root';
    $password = '';
    $conn = mysqli_connect($server,$user,$password);
    $sql = "use lzy;";
    $conn->query($sql);
    $sql = "delete from goods where gid= $id;";
    $conn->query($sql);
    mysqli_close($conn);
}


$data = json_decode(file_get_contents("php://input"), true);
if($data['gid']){
    deleteGoods($data['gid']);
}
elseif($data['gname'])
{$list['msg'] = addGoods($data);}
$list['data'] = getGoods();
$json = json_encode($list,JSON_UNESCAPED_UNICODE);
echo $json;
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值