如何解决如何使用getJSON分配json对象
我想将json对象branch
lat
和lng
分配给jsonData
变量。
如果我用console.log jsonData.responseJSON.positions.length
或jsonData.responseJSON.positions[0].lat
等
,我可以很好地看到我的json数据。
console image
但是,如果我对其进行编码并运行,它将出现错误。
例如,
var jsonData = $.getJSON("{% static "kia_data_brlatlng.json" %}",function(data){
console.log(jsonData)
});
for(var i = 0; i < jsonData.responseJSON.positions.length; i++) {
//not work
}
for(var i = 0; i < 681; i++) {
//work
}
有人给我一个提示,它需要$.getJSON
内有一个回调函数,但仍然很难找到解决方案。
任何帮助将不胜感激!
{
"positions": [
{
"branch": "A","lat": 37.5221642,"lng": 127.0339206
},{
"branch": "B","lat": 35.1547587,"lng": 129.0389295
},//and 679 more
]
}
解决方法
这是由于Javascript的异步特性。您必须等到得到响应。或者您可以在响应到来时编写代码。
var jsonData = $.getJSON("{% static "kia_data_brlatlng.json" %}",function(data){
console.log(jsonData)
for(var i = 0; i < data.responseJSON.positions.length; i++) {
//here this will work
}
});
或者getJSON返回承诺,因此您可以使用then来获得响应。在这里检查:function wait with return until $.getJSON is finished
,看完json对象后,基本上是这样的
jsonData = {
"positions": [
{
"branch": "A","lat": 37.5221642,"lng": 127.0339206
},{
"branch": "B","lat": 35.1547587,"lng": 129.0389295
},//and 679 more
]
}
因此,如果要进行迭代,可以像这样简单地对其进行迭代
for(var i = 0; i < jsonData.positions.length; i++) {
//work
console.log(jsonData.positions[i])
}
,
这是因为getJSON函数是异步的,因此在获取jsonData变量中的数据之前执行循环。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。