-2

我有一个 php 文件,它回显以下 JSON 编码的索引数组。

PHP信息

php页面具有以下标题

header("Content-Type: application/json");

php 回显以下 json 索引数组

 [
        [
            [17, 28, 1, "z"],
            [28, 31, 6, "b"],
            [8, 29, 6, "b"]
        ],
        [
            [19, 28, 1, "z"],
            [17, 25, 6, "b"],
            [19, 25, 6, "b"],
            [27, 32, 6, "b"],
            [9, 28, 6, "b"]
        ]
    ]

我一直在努力将其复制为使用 jquery 的索引 javascript 数组,我更喜欢使用 POST,因为将来可能会有很多数据要传递。我遇到的所有示例都是用于关联数组的少量使用和/或用于立即输出。

JAVASCRIPT 尝试

$.post('matchEngine.php', 
    function(data){
        var info = data; 
        document.write(info);
        }
    ); 

//output = 17, 28, 1, "z",28, 31, 6, "b",8, 29, 6, "b" 等等一长串 csv 值!

$.post('matchEngine.php', 
        function(data){
        var info = $.parseJSON(data); 
        document.write(info);
        }
        ); 

//没有输出

期望的结果

var info=  [[[17, 28, 1, "z"],[28, 31, 6, "b"],[8, 29, 6, "b"]],[[19, 28, 1, "z"],[17, 25, 6, "b"],[19, 25, 6, "b"],[27, 32, 6, "b"],[9, 28, 6, "b"]]]
4

1 回答 1

3

您的第一个代码的输出完全符合预期。

如果将数组转换为字符串,它将生成每个项目的字符串表示形式的逗号分隔列表。由于项目是数组,它们也将被转换为逗号分隔的字符串。

因此,17, 28, 1, "z"输出中是第一个内部数组的字符串表示形式,后跟逗号,以及下一个数组的字符串表示形式,依此类推。由于每个级别都用逗号分隔,因此您无法通过查看输出来区分嵌套数组和平面数组。

在您的第二个代码中,您试图解析已经解析的数据。这会将数组隐式转换为字符串表示形式,并且由于这不是有效的 JSON,您将不会得到任何返回。

要访问数据,只需使用方括号访问数组中的项目。例如data[0]将返回数组[[17, 28, 1, "z"],[28, 31, 6, "b"],[8, 29, 6, "b"]]data[0][0]将返回数组[17, 28, 1, "z"]data[0][0][3]并将返回值"z"

于 2013-06-07T09:48:24.247 回答