2013-03-12 82 views
0

我有一個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; 

回答

2

除了製作由@Even哈恩提出的改變,您需要更改您發佈如下數據:

$.post(
    "people.php", 
    {people : JSON.stringify(people)}, 
    function(data) 
    { 
     alert(data); 
    } 
); 

這樣一個名稱/值對發佈。名稱是「people」,值是Person對象數組的JSON編碼字符串。

然後,當您在PHP代碼中調用以下內容時,您正在將該JSON編碼的字符串解碼爲PHP端的數組。

$people = json_decode($_POST['people']); 

我也看到你分配$personObj到一個數組,但我不明白,你把東西在數組中。

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字符串。

+0

我試過了,它說,它需要一個字符串。人是一個陣列。我將它推入getStorage()中的數組中; – Derp 2013-03-12 02:09:51

+0

[約翰S的答案似乎更好。](http://stackoverflow.com/a/15352150/804100) – 2013-03-12 02:18:36

+0

+1你值得信任。 – 2013-03-12 02:49:01

0

也許PHP代碼應該是這個樣子:

<?php 
$personObj = Array(); 
$people = $_POST["people"]; 

foreach($people as $p) 
{ 
    $val = str_replace("\\","",$p); 
    $personObj = json_decode($val); 
} 

echo $personObj->firstName; 
?>