为何PHP接收JavaScript传递的数据返回Null?
问题原因与解决方案
问题出在你发送的是JSON格式的POST请求,但PHP默认的$_POST超全局变量只处理application/x-www-form-urlencoded或multipart/form-data编码的表单数据,不会自动解析JSON格式的请求体,所以$_POST['test']才会返回null。另外你的PHP代码里$myObj未初始化,也会触发潜在警告。
修改后的PHP代码
<?php // 先初始化一个空对象 $myObj = new stdClass(); $myObj->name = "John"; $myObj->age = 30; // 读取请求的原始JSON内容 $rawRequestData = file_get_contents('php://input'); // 解析JSON为PHP对象 $requestData = json_decode($rawRequestData); // 安全获取传递的test值,避免解析失败时报错 if ($requestData && property_exists($requestData, 'test')) { $myObj->test = $requestData->test; } else { $myObj->test = '无有效数据'; // 可选默认值 } $myJSON = json_encode($myObj); echo $myJSON; ?>
额外说明
- 若想将解析结果转为数组,可给
json_decode()添加第二个参数true:$requestData = json_decode($rawRequestData, true);,之后用$requestData['test']获取值 - 可以添加JSON解析错误检查:
if (json_last_error() !== JSON_ERROR_NONE),用来排查请求体是否为合法JSON格式
内容的提问来源于stack exchange,提问作者Nikos
相关产品推荐
相关产品推荐

