0

私はオブジェクトの配列を持っていPeopleます。それらを PHP に送信していますが、オブジェクトを PHP に戻して操作できるようにする方法は複雑に思えます。これが私が持っているものですが、AJAX Call に何も返されないようです。現在Person、配列には 1 つのオブジェクトしかありませんが、先に進む前にすべてが正常であることを確認したいと考えています。要するに、JSON をデコードするとき、それを PHP のオブジェクトに変換するべきではありませんか? 最後に、PHP オブジェクトの配列が必要です。People

Jクエリ

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;
4

3 に答える 3

2

@Even Hahn によって提案された変更を行うことに加えて、投稿するデータを次のように変更する必要があります。

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

このようにして、単一の名前と値のペアがポストされます。Person名前は「people」で、値はオブジェクトの配列の JSON エンコード文字列です。

次に、PHP コードで以下を呼び出すと、JSON エンコードされた文字列が PHP 側の配列にデコードされます。

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

配列に割り当てた場所もわかりますが$personObj、配列のどこに何かを配置したかはわかりません。

于 2013-03-12T02:17:07.153 に答える
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 文字列であるためです。

于 2013-03-12T01:55:26.070 に答える
0

おそらく、PHP コードは次のようになります。

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

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

echo $personObj->firstName;
?>
于 2013-03-12T02:38:18.833 に答える