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
相关产品推荐
相关产品推荐

