JSON和jQuery迭代问题

时间:2009-12-09 23:12:01

标签: php jquery json

我很确定这是一个明显的错误 - 但是让我解释一下我不知道的事情:

我通过jQuery调用PHP文件,如下所示:

$.getJSON("/phpincs/getbucket.php?awskey="+awskey+"&awssecret="+awssecret+"&bucket="+bucket,
    function(json){
        $.each(json,function(i,item){
        $(new Option(item.name,item.name)).appendTo('#bucket_contents_0');
        });
    }

它返回的JSON文件如下:

Array
(
    [bt_shop.png] => Array
        (
            [name] => bt_shop.png
            [time] => 1260393948
            [size] => 156985
            [hash] => 8a4eba621d5e08b84c962a0ad21ec2ae
        )

    [me_profile.jpg] => Array
        (
            [name] => me_profile.jpg
            [time] => 1260393952
            [size] => 2714
            [hash] => 4f5d185b0c671e6165902762681f098b
        )

    [thumbnail.aspx.jpeg] => Array
        (
            [name] => thumbnail.aspx.jpeg
            [time] => 1260393951
            [size] => 5268
            [hash] => 6939efa58ff7ffcac17218ffdd0d5d8c
        )

)
true

由于某种原因它似乎没有触发函数(json){} - 我已经发出警告(''); in并且它什么也没做。

有人可以快速向我解释那里似乎出现了什么问题吗?

干杯,

卡尔

4 个答案:

答案 0 :(得分:4)

很可能不会调用回调函数,因为它看起来不像你返回的是json。如果您定义了包含数组的$ variable ...则调用

echo json_encode($jsondata); exit;

在剧本结束时。

答案 1 :(得分:3)

我已经更改了内部数组的名称,因为之前的标签会导致点问题。您将收到如下错误:

myArray.bt_shop is undefined

当您尝试拨打

alert(myArray.bt_shop.png.name);

可以调用的唯一方法是使用

alert(myArray["bt_shop.png"].name);

所以稍微更改了一下代码,这就是你的数组的JSON版本......

{
    "one":
    {
        "name": "bt_shop.png",
        "time": "1260393948",
        "size": "156985",
        "hash": "8a4eba621d5e08b84c962a0ad21ec2ae"
    },

    "two":
    {
        "name": "me_profile.jpg",
        "time": "1260393952",
        "size": "2714",
        "hash": "4f5d185b0c671e6165902762681f098b"
    },

    "three":
    {
        "name": "thumbnail.aspx.jpeg",
        "time": "1260393951",
        "size": "5268",
        "hash": "6939efa58ff7ffcac17218ffdd0d5d8c"
    }
}

然后在拥有对象时引用这样的字段:

myArray["two"]["name"]
myArray["two"].name
myArray.two.name

答案 2 :(得分:1)

您返回的文件不是JSON。除非您使用PHP语法为我们描述您的JSON对象,否则您需要使用json_encode将其编码为JSON格式。

答案 3 :(得分:1)

您所谓的JSON文件不是JSON。或者你可能使用一些将奇怪的格式转换为JSON的PHP库吗?