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

时间:2018-03-11 04:21:19

标签: javascript jquery

我正在使用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);

相反,它返回空字符串。

我需要的是type pic objects属性的值。

2 个答案:

答案 0 :(得分:1)

getJSON没有直接返回JSON。它是异步的。您传递一个函数,该函数将在以后返回数据时调用。

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

答案 1 :(得分:1)

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

https://docs.oracle.com/javase/9/docs/api/java/util/concurrent/locks/StampedLock.html

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]);
        }
    });
}