1

我想通过 Ajax 将 Javascript 数组对象发布到 PHP。然后在 PHP 结束时,我仍然想将该对象用作真正的数组。以下是我迄今为止在使用传入对象作为ArrayPHP 端的方法方面仍然没有成功。我可以将其解析为string.

Javascript:

var myObj = { 
    fred: { apples: 2, oranges: 4, bananas: 7, melons: 0 }, 
    mary: { apples: 0, oranges: 10, bananas: 0, melons: 0 }, 
    sarah: { apples: 0, oranges: 0, bananas: 0, melons: 5 } 
}

然后,通过 AJAX 发送 Javascript/JQuery:

$.ajax({
    type: "POST",
    url: "ajax.php",
    dataType: "JSON",
    data: { "data" : JSON.stringify(myObj) }
}).success(function( response ) {
    alert(response);
});

然后在 PHP 处解析:

$data = json_decode( $_POST["data"] );
echo json_encode( $data["fred"] );
echo json_encode( $data["fred"]["apples"] );
echo json_encode( $data["fred"]->apples );
echo json_encode( $data[1] );
  • 以上任何一个都echo返回空白,返回浏览器。

但是当我:

$data = json_decode( $_POST["data"] );
$to_string = print_r( $data, true ); //<-- Used these instead
echo json_encode( $to_string ); //<-- Used these instead

..它将以下大字符串返回给浏​​览器:

stdClass Object
(
    [fred] => stdClass Object
        (
            [apples] => 2
            [oranges] => 4
            [bananas] => 7
            [melons] => 0
        )

    [mary] => stdClass Object
        (
            [apples] => 0
            [oranges] => 10
            [bananas] => 0
            [melons] => 0
        )

    [sarah] => stdClass Object
        (
            [apples] => 0
            [oranges] => 0
            [bananas] => 0
            [melons] => 5
        )
)
  • 所以似乎数据在那里,但是我怎样才能以正确的ARRAY方式解析这些数据PHP呢?
4

2 回答 2

1

true作为参数传递给 json_decode 以返回关联数组而不是对象:

json_decode($string, true);

http://php.net/manual/en/function.json-decode.php

于 2013-04-05T11:28:54.553 回答
1

传递第二个参数 as true,它将转换数组中的数据

$data = json_decode( $_POST["data"] , true);
于 2013-04-05T11:30:48.660 回答