StackOverflow (ERS),Как получить переменные в JQuery Ajax .done()
Я создал яваскрипт функцию, в которой для обработки данных из массива объектов, и в этой функции я итерация через массив, вызывающий ajax-запрос для каждого объекта в массиве.
Однако внутри функции ajax.done() мне нужно передать индекс итерации j. Внутри итерации, однако, j застрял на 4, тогда как вне итерации j успешно учитывает итерацию. Обратите внимание, что итерация i в приведенном ниже коде проходит через каждый запрос ajax, чтобы вытащить определенные значения для формирования массива, поэтому его можно игнорировать.
Может ли кто-нибудь помочь мне в разработке того, что мне нужно сделать, чтобы выполнить итерацию внутри блока .done()?
Спасибо, Джейми
Объект, передаваемый код:
var dataConfig = [
{ targetDiv: "#chart", chartTitle: "Title", tooltipVisible: true, xAxisLabel: "Label", leftYAxisLabel: "Unit" },
{ apiUrl: "URL", type: "column", yAxis: "right", visibleInLegend: false },
{ apiUrl: "URL", type: "line", yAxis: "left", visibleInLegend: false },
{ apiUrl: "URL", type: "line", yAxis: "left", visibleInLegend: false },
];
Кодекс:
for (var j = 2; j < dataConfig.length; j++) {
console.log(j);
chartConfig[j] = {
yAxisValues: [],
type: dataConfig[j].type,
yAxis: dataConfig[j].yAxis,
visibleInLegend: dataConfig[j].visibleInLegend
}
$.ajax({
url: baseURL + dataConfig[j].apiUrl,
beforeSend: function (xhr) {
xhr.setRequestHeader('Authorization', 'yes');
}
}).done(function (data) {
//get Y Axis Values
var yAxisData = data.DataSeries.Data;
yAxisValues = [];
for (var i = 0; i < yAxisData.length; i++) {
var yAxisValue = yAxisData[i].Y[0];
yAxisValues.push(parseInt(yAxisValue, 10));
};
console.log(yAxisValues);
console.log("j:", j);
// chartConfig[j].yAxisValues = yAxisValues;
});
};
отлично работает, спасибо! – Jamie