2

JSON我在尝试将from发送javascript到脚本时遇到了很长时间PHP:发送很好(我可以看到JSONin fiddler)但我在以下内容中什么也没收到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"]);

我显然希望看到一些东西,但 var_dump 什么也没返回。帮助将不胜感激!

4

3 回答 3

6

尝试:

$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将为空。

于 2012-09-03T14:04:18.407 回答
2

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

param1=value1&param2=value2

进入:

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

如果您以 json 格式发送数据,则必须从原始 php 输入中对其进行json_decode

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

您将拥有一个 PHP 对象,其中填充了您的 json 内容。

于 2012-09-03T14:09:59.367 回答
0

添加这个:

xmlhttp.setRequestHeader("Content-length", JSON.stringify(person).length);
于 2012-09-03T14:08:02.760 回答