我读过very similar subject但我不使用JQuery。
这就是问题:我想在调用我的函数之前完全加载json。我知道我必须使用回调,但我不知道为什么我的大脑无法做到。
这里是“json”(截断,因为它不是主题):
{type: "robot", nom: "445250sup01", ville: "RENNES", departement: "35", region: "Ouest", …}
{type: "robot", nom: "445250sup02", ville: "PARIS", departement: "75", region: "Ile-de-France", …}
{type: "robot", nom: "445250sup13", ville: "ORLEANS", departement: "45", region: "Ouest", …}
这是我的函数xhr的调用和json的读取:
var getDatas = getXHR(), // xhr in another file
regions = {};
dateRange = [];
getDatas.open("GET", "./db/datas.json", true);
getDatas.send();
getDatas.onreadystatechange = function() {
if (getDatas.readyState === 4 && (getDatas.status === 200 || getDatas.status === 0)) {
var robotsList = JSON.parse(getDatas.responseText);
getRobotsDatas(robotsList);
}
};
function getRobotsDatas(robotList) {
for (var i = 0; i < robotList.length - 1; i++) {...}
问题是永远不会加载最后一个对象...... 你能帮我找到合适的方法吗?
提前谢谢!
答案 0 :(得分:0)
假设robotsList
实际上是一个对象数组(从你的&#34; json&#34;片段(根本就不是json)来说并不完全清楚。)
您可能希望了解一下您在getRobotsDatas
功能中循环播放数组的方式。
你做的一个周期太少了。那是
for (var i = 0; i < robotList.length - 1; i++)
应该是
for (var i = 0; i < robotList.length; i++) // removed the - 1
或
for (var i = 0; i <= robotList.length - 1; i++) // changed < to <=
在我看来,第一个更清楚。