将JSON发布到PHP脚本

时间:2012-09-03 14:01:29

标签: php javascript json post

我在尝试从JSONjavascript脚本发送PHP时遇到了很长时间:发送正常(我可以在fiddler中看到JSON )但我在PHP script中没有收到任何内容:

javascript

var person = {
  name: 'yoel',
  age: 28
};
xmlhttp.open("POST","http://localhost:8888/statisticsdb.php",true);
xmlhttp.setRequestHeader("Content-Type", "application/json");
xmlhttp.send(JSON.stringify(person));   

php

echo 'trying to print ' . var_dump($_POST["name"]);

我希望很明显看到SOMETHING,但var_dump什么都不返回。非常感谢帮助!

3 个答案:

答案 0 :(得分:5)

尝试:

$data = json_decode(file_get_contents('php://input'));
var_dump($data->name);

原因是,POST请求的正文是:

{"name":"yoel","age":28}

但是,php期望类似(ref):

name=yoel&age=28

无法正确解析json字符串,因此$_POST将为空。

答案 1 :(得分:1)

$_POST保存从具有Content-Type application/x-www-form-urlencoded的请求解码的值,即它解析:

param1=value1&param2=value2

成:

array( 'param1' => 'value1', 'param2' => 'value2')

如果您以json格式发送数据,则必须json_decode中的raw php input

$input = file_get_contents('php://input');
$jsonData = json_decode($input);

你将拥有一个填充了json东西的PHP对象。

答案 2 :(得分:0)

添加:

xmlhttp.setRequestHeader("Content-length", JSON.stringify(person).length);