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

React Native中变量作为Axios POST参数无法传递到PHP后端问题咨询

问题排查与解决方法

核心问题原因

  • 前端传参结构错误:你在axios.post的第二个参数中写{body}属于ES6对象属性简写,等价于{ body: {latitude: lat} },相当于给实际要传递的参数多套了一层body字段,后端拿到的JSON结构不是直接包含latitude的一级对象。如果不修改前端写法,后端需要通过$_POST['body']['latitude']才能拿到对应值,更推荐调整前端传参结构去掉多余嵌套。
  • 注释掉的JSON.stringify操作不需要:axios默认会自动将传入的普通对象序列化为JSON格式的请求体,同时自动设置Content-Type: application/json请求头,手动转字符串反而可能导致请求头不匹配,后端无法正常解析。

修复方案

前端代码修改

直接将你定义的body变量作为axios.post的第二个参数传入,不要额外套对象:

let lat = location.latitude;
let lon = location.longitude;
let body = { latitude: lat };

const loadMessages = async () => {
    let res = await axios.post(`https://example.com/list.php?coords=${lat},${lon}`, body);
}

PHP端正确获取方式

你现有的解析逻辑是正确的,解析完成后直接从$_POST数组中取对应字段即可,可增加解析错误判断和空值判断避免异常:

// 读取原始请求体
$rawInput = file_get_contents('php://input');
// 解析为数组赋值给$_POST
$_POST = json_decode($rawInput, true);

// 检查JSON解析是否正常
if (json_last_error() !== JSON_ERROR_NONE) {
    http_response_code(400);
    exit('参数格式错误');
}

// 安全获取latitude参数
$latitude = $_POST['latitude'] ?? null;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 15:54:01