2017-04-01 179 views
0

将JSON字符串(数组)从PHP发送到PHP几个小时,我尝试找到一个简单的解决方案,将准备好的JSON字符串发送到PHP方法。 JavaScript部分:通过发送POST

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: 如果我回声(回声的file_get_contents( 'PHP://输入');)的原始数据。我得到这个:

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; 

没有成功。我认为$数据是NULL。
我尝试这样做:

echo $_POST['teams']; 

这使我这个:

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

不能被用作json_decode字符串。

的主要问题是,我不知道哪一部分是错误的...
感谢您的帮助

+0

为什么不使用jQuery.ajax发送数据? –

+0

如果你在json_decode()上放置$ _POST ['teams'],那么它解决了这个问题!为什么不能用作字符串? – CyC0der

+0

我做到了。我写了$ object = json_decode($ _ POST ['teams']); 之后,我可以访问一个值。没有成功。我很伤心:我不知道哪一部分是错的。也许只是像$ objec [0] - > id或$ object [0] ['id']的访问... – Franklin84

回答

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']); 
+0

然后我该如何访问第一个元素的ID? – Franklin84

+0

你可以通过使用这个来访问第一个数组元素的id:'$ _POST ['teams'] [0] ['id']' –

+0

刚刚发现:ajax不起作用。我从来没有用jQuery ajax做过任何事情。 我只是将代码复制到一个函数中,但它从不发送邮件。 – Franklin84