Ajax调用,make数组对象

时间:2017-05-18 20:52:42

标签: javascript jquery ajax maps

我想用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)
}

Console.log(test)

我没有解决问题的方法。 感谢

1 个答案:

答案 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)
}