Stackoverflow(ers)、
オブジェクトの配列からのデータを処理する JavaScript 関数を作成しました。この関数では、配列内の各オブジェクトに対して ajax 要求を呼び出して配列を反復処理しています。
ただし、ajax.done() 関数内では、反復のインデックス j を渡す必要があります。ただし、反復の内側では、j は 4 のままですが、反復の外側では、j は反復で正常にカウントされます。以下のコードの i 反復は、各 ajax リクエスト内をループして特定の値を引き出して配列を形成するため、無視できることに注意してください。
.done() ブロック内で j を反復させるために何をする必要があるかを理解するのを手伝ってくれる人はいますか?
ありがとう、ジェイミー
コードに渡されるオブジェクト:
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;
});
};