无法访问$ .getJSON返回的对象的属性

问题描述 投票:2回答:2

我正在获取一个.json文件,并使用json将其分配给变量$.getJSON(url);,当我检查它时

console.log(json);
console.log(typeof json);

只是为了确保我得到这个包含大量无关数据的大对象:console.log() result 完整代码示例:

var json = 0;
function fetchJson(url){
    var json = $.getJSON(url);
    console.log(json);
    console.log(typeof json);
    for(var i in json['responseJSON']){
        console.log(json['responseJSON'][i]);
    }
}
fetchJson('test.json');

当我尝试在页面加载时迭代json['responseJSON']时我除了最初的console.log()之外什么也没有得到任何东西,但如果我在控制台中复制并粘贴它,我也得到undefined。如果我使用

var list = "";
for(i in json['responseJSON']) {
    list += json['responseJSON'][i]; 
    return list;
}
console.log(list);

相反,它返回空字符串。

我需要的是typeobjectspic属性值。

javascript jquery
2个回答
1
投票

$.getJSON是异步的,这意味着它正在调用服务器,而你无法预测该响应何时会回来。请查看jQuery的文档,其中显示了如何提供一个回调函数,该函数将在请求完成并收到响应时运行:

http://api.jquery.com/jquery.getjson/

function fetchJson(url){
    var json = $.getJSON(url, function(json) {
        // this will run after the response is received.
        console.log(json);
        console.log(typeof json);
        for(var i in json['responseJSON']){
            console.log(json['responseJSON'][i]);
        }
    });
}

1
投票

getJSON不直接返回JSON。这是异步的。您传递一个函数,该函数在返回数据时稍后调用。

http://api.jquery.com/jquery.getjson/

© www.soinside.com 2019 - 2024. All rights reserved.