用PHP解码JSON字符串时遇到麻烦
问题描述:
我想使用JSON将JS对象的数组发送到PHP。我的球员数组如下:用PHP解码JSON字符串时遇到麻烦
var player;
var players = new Array();
//loop for number of players
player = new Object();
player.id = theID;
players[i] = player;
然后我的AJAX调用看起来是这样的:
JSONplayers = JSON.stringify(players);
$.ajax({
type: "POST",
url: "php/ajax_send_players.php",
data: {
"players" : JSONplayers
}
在PHP端的解码功能看起来像这样
$players = $_REQUEST['players'];
echo var_dump($players);
$players = json_decode($players);
echo 'players: ' .$players. '--'. $players[0] . '--'. $players[0]->id;
调试中chrome,JSON播放器var在发送之前看起来像这样: JSONplayers:“[{”id“:”Percipient“},{”id“:”4“}]”
当我在PHP vardump它看起来不错,给这个: 字符串(40)“[{\”id \“:\”Percipient \“},{\”id \“:\”4 \“}]] “
但我不能访问PHP数组,关于与首发球员回声声明:此输出: 玩家:----
全线没什么......也许它有话在数组中,我是新手,可能会丢失一些非常简单的东西。任何帮助将不胜感激。
note我也尝试json_decode($ players,true)将它作为assoc数组,但得到相似的结果。
答
我试图模仿一些数据:
var message = [
{id: "90"},
{"id": 123},
{"id": 456},
{"id": 87.5},
{"id": 123.1}
];
我用你的JavaScript,并增加了成功处理程序使用PHP文件的输出:
JSONplayers = JSON.stringify(message);
alert(JSONplayers);
$.ajax({
type: "POST",
url: "ajaxTest.php",
data: {
"players": JSONplayers
},
success: function(data) {
$('#myId').html(data);
}
});
然后我tweeked你的PHP一点位:
<?php
$players = $_REQUEST['players'];
$json = json_decode(stripslashes($players),true);
foreach($json as $row) {
echo $row['id'] . '<br />';
}
?>
这会为每个条目启动一个新行并通过其键(id)引用它。
+0
谢谢,完美的工作! – Anthony
http://php.net/manual/en/security.magicquotes.disabling.php – mario
[为什么反斜杠会自动添加到所有$ _GET,$ _POST?](http:// stackoverflow。 com/questions/4359854/why-backslashes-being-being-being-being-being-added-to-all-get-post-automatically) – mario