我有一个严重困扰我的问题!我有这个函数readFromJSON,它从url参数读取一个JSON,然后将其作为数组返回,这样我就可以遍历它并使用带有js的数据创建html元素; 这是该JSON的示例:
[
{
"productType": "Laptop",
"brands": [
{
"brand": "somebrand1",
"products": [
{
"id": "1",
"title": "smth"
},
]
},
{"productType": "Tablet",
"brands": [
{
"brand": "somebrand2",
"products": [
{
"id": "3",
"title": "smth3"
},
]
}
]
当然,该JSON中的每个数组都有多个项!
我使用JQuery AJAX通过此功能阅读它:
function readFromJSON(JSON_Addr) {
var array_of_items = [];
$.getJSON(JSON_Addr,
function (response) {
$(response).each(function (i) {
var brands = response[i].brands;
$(brands).each(function (j) {
var products = brands[j].products;
$(products).each(function (k) {
var product = products[k];
array_of_items.push(product);
});
});
});
}
);
return array_of_items;
}
然后,如果我使用JSON的URL调用此函数并将其记录到控制台,则可以将其正确地视为chrome中的对象数组,但是如果尝试获取returned_array[0]
,则无法定义。我使用了Object.prototype.toString()
并以chrome的形式获得了它,这正是我想要的:
[] 0:{....} 1:{....} [数组对象]
那我在做什么错呢?顺便说一句,我尝试使用$().each
,array.foreach()
和for (item in items)
,但它们都不起作用
我在$ load中记录了返回值:
$({
var res = readFromJSON("sample.json");
console.log(res); // works
console.log(Object.prototype.toString(res)); //works and returns : [array object]
console.log(res[0]);
})