Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.07.2014, 22:07
Профессор
Отправить личное сообщение для FRIE Посмотреть профиль Найти все сообщения от FRIE
 
Регистрация: 25.02.2010
Сообщений: 218

Как в цикле for переходить к следующей итерации после завершения предыдущей?
Есть такой скрипт у меня, который подгружает карточки. Подгружает такое число карточек которое указано на кнопке.
Затея в том чтобы он подгружал их по очереди, сначала полностью одну, затем вторую полностью и так далее.

Но как я вижу он тупо быстро проходит цикл и делает столько запросов на загрузку сколько итераций указано в цикле.

Как бы сделать так чтобы следующая загрузка начиналась только после того как закончится предыдущая?

$('.getbutton').click(function() {
				ob=$(this);
				$(ob).css("background-color","#ccc"); 
				quantity=$(this).attr("title");
				for (var i = 0; i <= quantity; i++) { 
					$.post("scripts/getcontent.php", {quantity:1}, function(data) {
					$("#main").append(data);
					});
				}
				  $(ob).stop().animate({ backgroundColor: "#2979ec"}, 2400);
		});
Ответить с цитированием
  #2 (permalink)  
Старый 30.07.2014, 09:21
Профессор
Отправить личное сообщение для WorM32 Посмотреть профиль Найти все сообщения от WorM32
 
Регистрация: 11.02.2014
Сообщений: 303

http://api.jquery.com/jquery.when/
Ответить с цитированием
  #3 (permalink)  
Старый 30.07.2014, 14:03
Профессор
Отправить личное сообщение для FRIE Посмотреть профиль Найти все сообщения от FRIE
 
Регистрация: 25.02.2010
Сообщений: 218

Как то не понятно как это будет выглядеть в коде. Есть ещё варианты?
Ответить с цитированием
  #4 (permalink)  
Старый 30.07.2014, 14:08
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Есть)
Напишите функцию которая будет выполнять запрос, вне её должен быть счетчик. Счетчик увеличивать с каждым ответом. Если счетчик меньше чем нужно в ответе функция вызывает саму себя (называется рекурсия).
Ответить с цитированием
  #5 (permalink)  
Старый 30.07.2014, 14:09
Профессор
Отправить личное сообщение для tsigel Посмотреть профиль Найти все сообщения от tsigel
 
Регистрация: 12.12.2012
Сообщений: 1,398

Получается что следующий запрос будет после ответа.
Ответить с цитированием
  #6 (permalink)  
Старый 30.07.2014, 19:03
Профессор
Отправить личное сообщение для FRIE Посмотреть профиль Найти все сообщения от FRIE
 
Регистрация: 25.02.2010
Сообщений: 218

Проблему решил.

Для тех кто столкнётся с такой же проблемой вот моё решение.

$('.getbutton').click(function() {
				b=$(this);
				$(b).css("background-color","#ccc"); 
				quantity=$(this).attr("title");
				function ajaxwithi(i){
					$.ajax({
						url: 'scripts/getcontent.php',
						type: 'POST',
						data: 'quantity=1',
						success: function(data) {
							$("#main").append(data);
							if (i < quantity) {ajaxwithi(i + 1);}
						}
					});
				}
				ajaxwithi(1);
				$(b).stop().animate({ backgroundColor: "#2979ec"}, 2400);
		});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как отобразить img только после загрузки всего изображения overdrive Общие вопросы Javascript 6 06.11.2012 20:02
Как заставить выполняться обработчик после всех имеющихся обработчиков данного элемен Анатолий Саратовцев jQuery 2 08.10.2012 18:49
как сделать, что бы див оставался на месте после перехода на следующую страницу? OklickSpb Общие вопросы Javascript 4 15.03.2012 22:02
Как обнулить переменные после завершения скрипта QRS jQuery 3 07.07.2010 03:08
Как передать что-то после location.replace? Nominus umbra Общие вопросы Javascript 26 23.12.2009 21:50