Задать вопрос
@zevem
Стрелец

Почему у ajax при foreach функция в success срабатывает только после проработки всего массива?

Бьюсь уже второй день и никак не могу понять.

Есть код:
for (l = 0; l < obj.length; l++) {
$.ajax({
type: "POST",
dataType: "json",
url: ссылка,
data: параметры,
contentType: false,
processData: false,
success: function(json) {
alert("asdf");
document.getElementById('product_image_files').style.display = 'none';
},
});
}


Это код должен обрабатывать массив пошагово. Обрабатывает первый элемент, всплывает alert, product_image_files исчезает. Дальше второй и т.д.

Проблема в том, что product_image_files исчезает только после обработки всех элементов, но alert почему то выходит вовремя.

Происходит все так: первый элемент обработался, всплывает alert, дальше должен исчезнуть product_image_files, но он не исчезает. Начинается обработка последнего элемента, всплывает alert и только тут исчезает product_image_files. Ребята подскажите что не так?
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@alexalexes
alert стопорит выполнение последующих инструкций, пока пользователь не ответит на всплывающиее окно, поэтому вот это будет выполнено после ответа пользователя.
document.getElementById('product_image_files').style.display = 'none';

PS:
for (l = 0; l < obj.length; l++)
Вы в курсе, что l в таком описании всегда будет создаваться в глобальном объекте window, а не локально, если цикл описан в какой-нибудь функции?
Если цикл работает по принципу "отработал и забыл, что было в счетчике", то никогда не забывайте писать var.
for (var l = 0; l < obj.length; l++)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы