我想用ajax调用检索的数据创建一个对象。 问题是,我调用我的函数每次ajax调用,它创建一个包含1个条目的数组*我的10个文件,但我想要1个包含10个条目的数组。
function mapXML(data) {
for (let i = 0; i < data.length; i++) {
let maps = 'maps/' + data[i];
$.ajax({
url: maps,
type: "GET",
datatype: "xml",
success: function(xml) {
traitementCarte(xml)
}
});
}
}
function traitementCarte(xml) {
console.log(xml)
let lat = [],
lng = [],
test = [];
var lastElementLat,
lastElementLng;
$(xml).find('trkpt').each(function(i, el) {
lat[i] = parseFloat($(this).attr('lat'));
lng[i] = parseFloat($(this).attr('lon'))
});
lastElementLat = lat[lat.length - 1];
lastElementLng = lng[lng.length - 1];
let locations = {
lat: lastElementLat,
lon: lastElementLng
};
test.push(locations);
console.log(test)
}
我没有解决问题的方法。 感谢
答案 0 :(得分:1)
您需要在traitementCarte()
函数之外声明数组变量,否则每次调用它时都会创建一个新数组。
var test = [];
function traitementCarte(xml) {
console.log(xml)
let lat = [],
lng = [];
var lastElementLat,
lastElementLng;
$(xml).find('trkpt').each(function(i, el) {
lat[i] = parseFloat($(this).attr('lat'));
lng[i] = parseFloat($(this).attr('lon'))
});
lastElementLat = lat[lat.length - 1];
lastElementLng = lng[lng.length - 1];
let locations = {
lat: lastElementLat,
lon: lastElementLng
};
test.push(locations);
console.log(test)
}