我在尝试从JSON
向javascript
脚本发送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什么都不返回。非常感谢帮助!
答案 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¶m2=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);