我很确定这是一个明显的错误 - 但是让我解释一下我不知道的事情:
我通过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并且它什么也没做。
有人可以快速向我解释那里似乎出现了什么问题吗?
干杯,
卡尔
答案 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库吗?