$GLOBALS['_POST']
无法直接获取HTTP POST请求的JSON参数,因为PHP不能自动将JSON数据解析到$_POST
数组中。
有以下几种方法可以获取POST请求的JSON参数:
- 使用file_get_contents('php://input')读取JSON字符串,然后使用json_decode解析:
$json = json_decode(file_get_contents('php://input'), true);
- 设置请求内容类型为application/json,并使用
$_SERVER['CONTENT_TYPE']
检测:
if ($_SERVER['CONTENT_TYPE'] == 'application/json') {
$json = json_decode(file_get_contents('php://input'), true);
}
- 使用curl等手工设置Content-Type头,然后解析请求体:
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
// ...
$json = json_decode(curl_exec($ch), true);