通过POST将JSON字符串(数组)从Javascript发送到PHP

时间:2017-04-01 08:36:41

标签: javascript php json http-post

几个小时我试图找到一个简单的解决方案,将一个准备好的JSON字符串发送到PHP方法。 Javascript部分:

form = document.createElement("form"),
node = document.createElement("input");
var element1 = document.createElement("input");
form.method = "POST";
element1.value='[{"id": 110, "teamname": "first"}, {"id": 140, "teamname": "second"}]';
element1.name="teams";
form.appendChild(element1);  
form.appendChild(node.cloneNode());
form.action = "?updateTeamnames";
form.style.display = "none";
document.body.appendChild(form);
form.submit();
document.body.removeChild(form);

PHP: 如果我用(echo file_get_contents(' php:// input');)回显原始数据。我明白了:

teams=%5B%7B%22id%22%3A+110%2C+%22teamname%22%3A+%22first%22%7D%2C+%7B%22id%22%3A+140%2C+%22teamname%22%3A+%22second%22%7D%5D

如何访问JSON字符串团队? 我试过这个:

$data = json_decode(file_get_contents('php://input'), true);
echo $data;

没有成功。我认为$ data是NULL 我试过这个:

echo $_POST['teams'];

这让我想到了这个:

[{\“id\“: 110, \“teamname\“: \“first\“}, {\“id\“: 140, \“teamname\“: \“second\“}]

在json_decode中不能用作字符串。

主要问题是,我不知道哪个部分是错的...
谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您可以使用jQuery.ajax发布数据,如下所示:

<script>
jQuery.ajax('./?updateTeamnames', {
    method: 'POST',
    data: {teams: [{id: 110, teamname: "first"}, {id: 140, teamname: "second"}]}
});
</script>

在PHP脚本中,您可以通过转储查看数据:

var_dump($_POST['teams']);