Я относительный новичок в javascript, и я пытаюсь сделать несколько вызовов ajax в цикле for. Он перебирает элементы массива с использованием другого URL-адреса для вызова ajax каждый раз, когда он проходит через цикл. Проблема в том, что значение переменной «test» всегда равно «condition4». Я привык к другим языкам, где значение «test» будет «condition1», затем «condition2» и т. Д., Когда оно проходит через цикл for. Вот упрощенная версия моего кода:создание нескольких вызовов ajax в цикле for
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 связывается по имени. Создайте новую область или избегайте локализации локальных варов, передавая их, используя, скажем, «контекст». –
Это потому, что ваши вызовы ajax выполняются асинхронно, поэтому к моменту вашего успеха цикл достигнет 4, поэтому все ваши результаты будут 4 – Pete