我不会告诉你我已经搜索并尝试了来自互联网的数十种语法。你无法判断我是否撒谎。所以......
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);
}
});
$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。
最后一张图是我得到的PHP部分:
var_dump(file_get_contents('php://input'));
不要以“不明显吗?!”开头。它是。我知道那个错误说的是什么。我只是不知道如何绕过它。我怎么抓住这个帖子?我见过 $ x = json_decode($ _ POST []),但这也不起作用。我用JSONlint测试了字符串化的json并验证了它。我尝试过不同类型的数组,对象,数组属性,.AJAX,.post(),. get()。我不知道选择。我已经看到了各种各样的建议,我已经尝试过了。我知道我错过了一些东西,当我找到它时,我可能会爆炸或杀死我的猫。
谢谢,一如既往地
我在代码中使用数据:'kkt ='+ out 进行了修改。 现在,使用这个:
$x = json_decode($_POST['kkt'], true);
echo $x['myPostData']['address1'];
......我可以获得价值。问题是我不知道这是如何工作的。不过我知道这是关键。
答案 0 :(得分:6)
$ _ 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函数调用。
答案 1 :(得分:2)
我发现只删除此行
contentType: "application/json; charset=utf-8",
然后你可以操作字符串
中的数据答案 2 :(得分:1)
如果您想要做的就是将另一端转换为PHP数组,是否有理由使用JSON.stringify
?为什么不
$.ajax({
type: "POST",
url: "joaca2.php",
data: jsonData, //or whatever name
dataType: "html",
success: function (response) {
alert(response);
}
});
然后在PHP中
var_dump($_POST);
这会将数据作为键值对传递给您的脚本,而不是膨胀的JSON表示。 HTTP编码(由jQuery本地完成)对你来说应该足够了。
答案 3 :(得分:1)
您正在尝试在整个POST上运行json_decode,这是一个数组。您应该了解哪个键包含您的ajax字符串,并将其命名为:
json_decode($_POST['key'])
了解你的密钥是如何调用的,只需使用var_dump转储$ _POST ...
答案 4 :(得分:0)
dataType:“html”不应该是dataType:“json”?