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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法访问$ .getJSON返回的对象的属性相关的知识,希望对你有一定的参考价值。

我正在获取一个.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属性值。

答案

$.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]);
        }
    });
}
另一答案

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

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

以上是关于无法访问$ .getJSON返回的对象的属性的主要内容,如果未能解决你的问题,请参考以下文章

Mongoose - 无法访问对象属性?

修改 getJSON 以使用 CORS

$.getJSON 函数期间设置的变量只能在函数内访问

Stat() 函数返回值 -1,因此无法访问文件属性。我该如何纠正?

$.getJSON 返回值到变量 [重复]

Ajax和getjson为啥在ie浏览器不同版本中显示不同的数据