我的JavasSript发送请求:
var jax = new XMLHttpRequest();
jax.open("POST", "http://localhost/some.php", true);
jax.setRequestHeader("Content-Type", "application/json");
jax.send(JSON.stringify(jsonObj));
jax.onreadystatechange = function() {
if(jax.readyState === 4) { console.log(jax.responseText); }
}
现在我所有的PHP都是:
print_r($HTTP_RAW_POST_DATA);
print_r($_POST);
原始发布数据的输出是对象字符串,但是post数组是空的。
{"name" : "somename", "innerObj" : {} ... }
Array
(
)
我需要以$_POST
变量的正确格式获取它,并且jquery不是一个选项。
答案 0 :(得分:6)
是的,因为user1091949发布了我的评论作为答案,这也是同样的事情,所以OP可以选择批准的答案(如果有效):
$json = json_decode(file_get_contents('php://input'));
此时,$json
将是stdClass
的实例...如果您更喜欢关联数组,只需将第二个参数传递给json_decode('{"json":"string"}', true);
BTW:从不,永远使用 death 的禁止错误抑制器:@
。错误是帮助你,而不是惹恼你......
答案 1 :(得分:0)
您需要获取原始帖子数据:
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
exit;
}
$postdata = @file_get_contents("php://input");
$json = json_decode($postdata, true);
$json
将是一个包含JSON数据的关联数组。