You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3使用Axios向PHP发送Post请求无数据,求排查解决

问题分析与解决

你的代码存在两个核心问题,导致后端无法接收并写入数据:

1. 请求格式不匹配

Axios发送POST请求时默认采用application/json格式传递数据,但PHP的$_POST超全局变量仅能解析application/x-www-form-urlencoded(表单默认格式)或multipart/form-data类型的请求体,因此直接用$_POST['titleName']无法获取JSON格式的数据。

2. PHP超全局变量大小写错误

代码中$_Server['REQUEST_METHOD']是错误写法,PHP超全局变量严格区分大小写,需改为$_SERVER['REQUEST_METHOD']。


解决方案一:后端适配JSON请求体(前后端分离场景推荐)

修改PHP代码,直接读取并解析JSON格式的请求体:

$server = "localhost";
$dbname = "Vue";
$username = "root";
$password = "";
$tblGroup = "Titles";
$dsn = "mysql:host=$server;dbname=$dbname;charset=utf8";
$id = '';
$option = [
    PDO::ATTR_PERSISTENT => TRUE,
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
];
$method = $_SERVER['REQUEST_METHOD']; // 修正大小写错误
try{
    $connection = new PDO($dsn, $username, $password, $option);
    if($connection){
        try{
            // 读取JSON请求体并转为数组
            $requestData = json_decode(file_get_contents('php://input'), true);
            $titleName = $requestData['titleName'] ?? '';
            
            if(!empty($titleName)){
                // 使用标准INSERT语法,可读性更强
                $stmt = $connection->prepare("INSERT INTO $tblGroup (titleName) VALUES (?)");
                $stmt->bindValue(1, $titleName);
                $stmt->execute();
                echo "Successful";
            } else {
                echo "Missing titleName parameter";
            }
        }catch(PDOException $e){
            echo $e->getMessage();
        }
        
    }
}catch(PDOException $exception){
    echo"Error Connect To Database : [ " . $exception->getMessage() . " ] ";
}

解决方案二:前端修改为表单格式请求

若希望通过$_POST直接获取数据,可修改Axios配置,将数据转为表单格式发送:

// 先安装qs库:npm install qs
import qs from 'qs';

axios
  .post('http://localhost:8888/vueBackend/connection.php', qs.stringify({
     titleName:'Default'
  }))
  .then(response => console.log(response))
  .catch(err=>console.log(err.message))

同时记得修正PHP中的$_Server为$_SERVER。


额外提示:你原代码中的INSERT $tblGroup SET titleName=?写法虽能运行,但更推荐使用标准的INSERT INTO 表名 (字段名) VALUES (?)语法,兼容性与可读性更佳。

内容的提问来源于stack exchange,提问作者amirali

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 00:45:13