我是jQuery的新手,我正在尝试getJSON
函数。我想要做的是拉出JSON文件的“id”部分并将其推入jQuery中名为planes
的数组中。从那里,该数组用于自动完成功能,以填充可搜索的ID。
var planes = [];
$.getJSON('planes.json', function(data) {
console.log('Filling array...');
//This is where I think the issue is occurring.
//Is using the name of the section you want to use the correct syntax here?
$.each(data.id, function (index, val) {
planes.push(val.id);
console.log('Pushed ' + index);
});
});
// After getJSON, array should look something like this:
// var planes = [
// 'Alara',
// 'Fiora',
// 'Innistrad',
// 'Kamigawa',
// 'Lorwyn',
// 'Mirrodin',
// 'Ravnica',
// 'Shandalar',
// 'Zendikar'
// ];
JSON文件的排列如下:
[
{"id": "Ravnica"},
{"id": "Lorwyn"},
{"id": "Innistrad"},
{"id": "Zendikar"},
{"id": "Kamigawa"},
{"id": "Mirrodin"},
{"id": "Shandalar"},
{"id": "Alara"},
{"id": "Fiora"}
]
非常感谢任何帮助。
答案 0 :(得分:1)
你几乎拥有它,虽然你正在循环data.id
这不是你想要做的事情。您应该循环浏览data
,然后推送val.id
。
如果你想要循环遍历data.id
,那么你的json就必须这样构建:
{
"id": [
"things",
"to",
"loop",
"through"
]
}
..但事实并非如此,所以只需循环访问数据。
答案 1 :(得分:0)
请检查以下解决方案。我有硬编码的平面数据,而不是从文件中获取,但解决方案是相同的。你只需要通过迭代数据而不是data.id来更新你的$ .each行(这是你的错误代码很好)。
var data = [{
"id": "Ravnica"
}, {
"id": "Lorwyn"
}, {
"id": "Innistrad"
}, {
"id": "Zendikar"
}, {
"id": "Kamigawa"
}, {
"id": "Mirrodin"
}, {
"id": "Shandalar"
}, {
"id": "Alara"
}, {
"id": "Fiora"
}];
var planes = [];
//surround this each with your $.getJSON. I have just hardcoded json data instead of getting it from file
$.each(data, function(index, val) {
planes.push(val.id);
});
console.log(planes);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
您的更新plunker链接Plunker
答案 2 :(得分:0)
您还可以查看本机数组映射方法,这样可以节省您创建数组然后将其推送到其中的过程。通过在每个项目上应用映射函数,它只返回给定原始数组的新数组。
$.getJSON("planes.json",function(data){
console.log(data.map(function(plane){return plane.id;}))
}
但是,如果我没记错的话,这在IE&lt; = 8中不可用。