These are chat archives for dru-io/Drupal

11th
Apr 2016
Alan Bondarchuk
@fortis
Apr 11 2016 07:14
Anatoly
@politsin
Apr 11 2016 08:25
)))))))))))0
kossmokvin
@kossmokvin
Apr 11 2016 17:33

Знаю, что немного не по теме. Помогите, пожалуйста, с jquery AJAX. Есть цикл, который отправляет 20 аяксов на разные URL. Как в результатах работать с внешней переменной, которая была на момент отправления запроса? Например, со счётчиком цикла. Пример:
for(i=0;i<list.legth;i++){
$.ajax({
url: list[i].link
}).done(function(data) {
console.log(i);
});
}

list.legth равняется 20. Если запустить этот код то в консоль 20 раз выведется число "21" - потому что на момент получения ответа от Ajax цикл FOR уже докрутил i до последнего значения 21. То есть он берёт внешнюю переменную на момент ПОЛУЧЕНИЯ ОТВЕТА. А мне нужно, чтобы в методе DONE я имел возможность работать с значением i, которое было на момент ОТПРАВЛЕНИЯ ЗАПРОСА. То есть в ответ я ожидаю получить 20 чисел от 1 до 20. --- Как правильно передать это i в метод done ??

опечатка в коде length* не обращайте внимание.
Raman Starshykh
@dashiwa
Apr 11 2016 18:56
javascript.ru
Alan Bondarchuk
@fortis
Apr 11 2016 19:42
в done ты работаешь с ответом
если это какой то id то и возвращай его в ответе
или параметр context передай помимо url
context: {step: i}
и в done this.step будет
или async: false и оставь как есть
но 20 аякс запросов это пздц)
с любым способом))
@kossmokvin
Raman Starshykh
@dashiwa
Apr 11 2016 20:54
Ну да , а как насчет варианта просто передать массив? целиком.