我有一组People
个对象。我正在将它们发送到PHP,但是用PHP重新获取对象的方式让我可以操作它们似乎令人费解。这就是我所拥有的,但它似乎没有将任何内容返回给我的AJAX Call。现在我在我的阵列中只有1个Person
对象,但我想确保在我前进之前一切正常。简而言之,当我解码我的JSON不应该将它转换为PHP中的对象?最后,我想要一个People
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;
答案 0 :(得分:2)
除了进行@Even Hahn建议的更改外,您还需要更改发布的数据,如下所示:
$.post(
"people.php",
{people : JSON.stringify(people)},
function(data)
{
alert(data);
}
);
这样就会发布单个名称/值对。名称为“people”,值为Person
个对象数组的JSON编码字符串。
然后,当您在PHP代码中调用以下内容时,您正在将该JSON编码的字符串解码为PHP端的数组。
$people = json_decode($_POST['people']);
我也看到你将$personObj
指定给数组的位置,但我看不到你在数组中放置任何内容。
答案 1 :(得分:1)
尝试在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字符串。
答案 2 :(得分:0)
也许PHP代码应如下所示:
<?php
$personObj = Array();
$people = $_POST["people"];
foreach($people as $p)
{
$val = str_replace("\\","",$p);
$personObj = json_decode($val);
}
echo $personObj->firstName;
?>