无法访问$ .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);
相反,它返回空字符串。
我需要的是type
objects
的pic属性值。
答案
$.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返回的对象的属性的主要内容,如果未能解决你的问题,请参考以下文章