1

我有一个看起来像这样的 JSON 编码数组(它来自 2d PHP 字符串数组):

[
[
    "a1",
    "a2",
    "a3",
    "a4"
],
[
    "b1",
    "b2",
    "b3",
    "b4"
],
[
    "c1",
    "c2",
    "c3",
    "c4"
]
]

它已在http://jsonlint.com/上得到验证

现在我想通过 Ajax 将此数组发送到另一个页面并将其转换回 2d PHP 数组。制作 JSON 数组后,我执行以下操作(其中 myJsonArray 是我在将数组制作成 Javascript 数组后给数组的名称。:

$.ajax({
       type: "GET",
       url: "somewhere.php",
       data: {jsonArray : myJsonArray},
       dataType: "json",
       success: function(msg){
         alert( msg); 
       }

     });
 }

然后在somewhere.php我做:

 $json_array = $_GET['jsonArray'];

 $myArray = json_decode($json_array,true);

但是当我回显结果时,我得到了

[Object object]

我不确定如何重新创建 PHP 数组。

编辑:如何制作 myJsonArray:

<?php
$array = json_encode($original_array);

echo "var myJsonArray = ". $array . ";\n";
?>

我还想指出,出于测试目的,在警告框中,我让它在成功时打印 myJsonArray,它确实按预期打印出数组。

4

2 回答 2

2

“[Object object]”是 javascript 将对象评估为字符串。

当您将可选的“true”传递给 json_decode 时,您就是在告诉它它是一个关联数组。但是你真的想要一个数组数组。

我确信如果您使用 JSON.stringify 打印到您的日志,您将拥有正确的数据,除了外括号是“{..}”。

于 2012-12-02T18:43:51.267 回答
-1

我已经尝试执行下面的代码片段来解码上面指定的 json 内容,它对我来说工作正常。

<?php
               $a=array(array("a1","a2","a3","a4"),array("b1","b2","b3","b4"),array("c1","c2","c3","c4"));
               $json_content=json_encode($a);
              $json_array=json_decode($json_content,true);
               echo '<pre>';
                print_r($json_array);
?>
于 2012-12-02T19:32:29.467 回答