通过JSON发送和解码对象数组
问题描述:
我有一个People
对象的数组。我将它们发送给PHP,但以PHP的方式让我的对象返回,所以我可以操纵它们似乎令人费解。这是我的,但它似乎没有返回任何回我的AJAX呼叫。现在我只有1 Person
对象在我的阵列中,但我想确保一切都很好,然后再继续前进。总之,当我解码我的JSON不应该将其转换为PHP中的对象?最后,我想这是PHP对象的数组People
通过JSON发送和解码对象数组
jQuery的
var people = new Array();
var person = new Person("Michael", "Jackson", 50);
localStorage.setItem(person.firstName + " " + person.lastName, JSON.stringify(person));
function Person(firstName, lastName, age)
{
this.firstName=firstName;
this.lastName=lastName;
this.age=age;
}
function getStorage(){
var tempPerson;
for(var i = 0; i < localStorage.length; i++)
{
tempPerson = $.parseJSON(localStorage.getItem(localStorage.key(i)));
people.push(tempPerson);
}
}
function getPeople(){
$.post(
"people.php",
{people : people},
function(data)
{
alert(data);
}
);
}
getStorage();
getPeople();
PHP
<?php
$personObj = Array();
$people = $_POST['people'];
for($i = 0; $i < count($people); $i++)
{
foreach($people[$i] as $person)
{
$streamObj = json_decode($person);
}
}
echo $personObj->$firstName;
答
除了制作由@Even哈恩提出的改变,您需要更改您发布如下数据:
$.post(
"people.php",
{people : JSON.stringify(people)},
function(data)
{
alert(data);
}
);
这样一个名称/值对发布。名称是“people”,值是Person
对象数组的JSON编码字符串。
然后,当您在PHP代码中调用以下内容时,您正在将该JSON编码的字符串解码为PHP端的数组。
$people = json_decode($_POST['people']);
我也看到你分配$personObj
到一个数组,但我不明白,你把东西在数组中。
答
尝试在你的PHP移动你的JSON解码:
$personObj = Array();
$people = json_decode($_POST['people']);
for($i = 0; $i < count($people); $i++)
{
foreach($people[$i] as $person)
{
$streamObj = $person;
}
}
echo $personObj->$firstName;
这是因为$_POST['people']
是需要解码的JSON字符串。
答
也许PHP代码应该是这个样子:
<?php
$personObj = Array();
$people = $_POST["people"];
foreach($people as $p)
{
$val = str_replace("\\","",$p);
$personObj = json_decode($val);
}
echo $personObj->firstName;
?>
我试过了,它说,它需要一个字符串。人是一个阵列。我将它推入getStorage()中的数组中; – Derp 2013-03-12 02:09:51
[约翰S的答案似乎更好。](http://stackoverflow.com/a/15352150/804100) – 2013-03-12 02:18:36
+1你值得信任。 – 2013-03-12 02:49:01