使用$.getJSON循环遍历数组

Loop through an array using $.getJSON

本文关键字:遍历 数组 循环 getJSON 使用      更新时间:2023-09-26

我使用for循环来迭代日期数组。此数组被传递到JSON请求中。问题是,每次循环时,它只提取数组中的第一个项。。就像它出于某种原因忽略了CCD_ 1或它的缓存一样。我尝试了两种不同的方法,结果都是一样的。有什么建议吗?

第一种方法

for (i = 0; i <= 7; i++) {
    (function(i) { 
    $.getJSON(url + apiKey + "/" + position.coords.latitude + "," + position.coords.longitude + "," + aryDates[i] + "?callback=?", function(data) {
    var listItem = document.createElement("li");
       listItem.className = "js-day-temp";
       $('.js-forecast').append(listItem);
       $('.js-day-temp').html(Math.floor(data.daily.data[0].temperatureMin) + '&#176;');
    });
    })(i);
}

第二种方法

for (i = 0; i <= 7; i++) {
$.ajax({
    url: url + apiKey + "/" + position.coords.latitude + "," + position.coords.longitude + "," + aryDates[i] + "?callback=?",
    async: false,
    dataType: 'json',
    success: function(data) {
    var listItem = document.createElement("li");
    listItem.className = "js-day-temp";
    $('.js-forecast').append(listItem);
    $('.js-day-temp').html(Math.floor(data.daily.data[0].temperatureMin) + '&#176;');
    }
  });
}

这就是我提取日期的方式

function GetDates(startDate, daysToAdd) {
var aryDates = [];
var currentDay = [];
for(var i = 0; i <= daysToAdd; i++) {
   var currentDate = new Date();
  currentDate.setUTCDate(startDate.getUTCDate() + i);
  currentDay.push(DayAsString(currentDate.getUTCDay()));
  // aryDates.push(DayAsString(currentDate.getDay()) + ", " +            
currentDate.getDate() + " " + MonthAsString(currentDate.getMonth()) + " " + currentDate.getFullYear());
  aryDates.push(currentDate.getUTCFullYear() + "-" + MonthAsString(currentDate.getUTCMonth()) + "-" + ("0" + (currentDate.getUTCDate()+1)).slice(-2) + "T12:00:00-0400");
 }
return aryDates;
return currentDay;
 }
 function MonthAsString(monthIndex) {
var d=new Date();
var month=new Array();
month[0]="01";
month[1]="02";
month[2]="03";
month[3]="04";
month[4]="05";
month[5]="06";
month[6]="07";
month[7]="08";
month[8]="09";
month[9]="10";
month[10]="11";
month[11]="12";
return month[monthIndex];
}
function DayAsString(dayIndex) {
var weekdays = new Array(7);
weekdays[0] = "Sunday";
weekdays[1] = "Monday";
weekdays[2] = "Tuesday";
weekdays[3] = "Wednesday";
weekdays[4] = "Thursday";
weekdays[5] = "Friday";
weekdays[6] = "Saturday";
return weekdays[dayIndex];
}
var startDate = new Date();
var aryDates = GetDates(startDate, 7);

想明白了!以下是我更改的内容:

$('.js-forecast').append('<li class="js-day-temp ' + 'day-selector' + i + '">' + aryDates[i] + '</li>');
$('.js-day-temp.day-selector' + i).html(Math.floor(data.currently.temperature) + '&#176;');