私はjavascriptの初心者です。forループ内で複数のajax呼び出しを作成しようとしています。ループを通過するたびに、ajax呼び出しのために別のURLを使用して配列の要素をループします。問題は、変数 'test'の値が常に「condition4」に等しいということです。私は他の言語に慣れていますが、 'test'の値は 'condition1'、次に 'condition2'などはforループを通ります。ここに私のコードの簡易版は、次のとおりです。forループ内で複数のajax呼び出しを作成する
var myData = [];
var cnt = 0;
var link;
var myCounter = 0;
var myArray = ["condition1", "condition2", "condition3", "condition4"];
for (x = 0; x < myArray.length; x++) {
link = "https://test.com/" + myArray[x];
myCounter = x;
GetJSON(function (results) {
for (i = 0; i < results.data.length; i++) {
var id = results.data[i].identifier;
var test = myArray[myCounter];
myData[cnt] = { "id": id, "test": test };
cnt++;
}
});
}
function GetJSON(callback) {
$.ajax({
url: link,
type: 'GET',
dataType: 'json',
success: function (results) {
callback(results);
}
});
}
これは同じ古い話ですが、JSは名前でバインドします。新しいスコープを作成するか、例えば、 'context'を使ってローカル変数を渡すことでローカル変数を閉じないようにします。 –
これはあなたのAjax呼び出しが非同期的に行われているため、成功した時点でループは4になりますので、すべての結果は4 – Pete