我不会告诉你我已经在互联网上搜索并尝试了数十种语法。你不知道我是不是在说谎。所以……
这是我的 html 的一部分(相关部分):
var jsonData = {
address: 'address',
address1: 'address1',
address2: 'address2'
};
var out = JSON.stringify(jsonData);
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: "joaca2.php",
data: out,
dataType: "html",
success: function (response) {
alert(response);
}
});
这是 PHP 部分:
$x = json_decode($_POST, true);
// don't worry: it doesn't get to this line below
printf("<pre>%s</pre>", print_r($x, 1));
我尽量保持简单,也许今年某个时候我会学习正确的 JSON。
这是我得到的:
- data sent (像婴儿的屁股一样干净)
- html response (xdebug 格式)
- THIS (这……让我生气)
最后一张图片是当 PHP 部分有这个时我得到的:
var_dump(file_get_contents('php://input'));
不要以“这不是很明显吗?!”开头。这是。我知道那个错误是什么意思。我只是不知道如何解决它。我如何捕获那个职位?我见过 $x = json_decode($_POST[]),但这也不起作用。我已经用 JSONlint 测试了字符串化的 json 并通过了验证。我尝试过不同类型的数组、对象、数组属性、.AJAX、.post()、.get()。我没有已知的选择。我看过各种各样的建议,而且我几乎都试过了。我知道我丢失了一些东西,当我找到它时,我可能会爆炸或杀死我的猫。
一如既往的感谢
我想我成功了:
我在代码中修改了data: 'kkt=' + out。 现在,使用这个:
$x = json_decode($_POST['kkt'], true);
echo $x['myPostData']['address1'];
...我可以得到值。问题是我不知道这到底是怎么回事。不过,我知道这是一把 key 。
最佳答案
$_POST 是所有已发布元素的数组...您只传递了一个元素,但没有为其分配名称。
尝试使用
$x = json_decode($_POST[0]);
虽然,我会做的是:
var out = JSON.stringify({'myPostData' : JSON.stringify(jsonData) });
然后:
$x = json_decode($_POST['myPostData']);
如何更改原始 jsonData 以包含主分支:
var jsonData = { myPostData: {
address: 'address',
address1: 'address1',
address2: 'address2'
} };
然后返回原始的 stringify 函数调用。
关于PHP 处理 JSON 发送的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4014921/